Как проверить, работает ли конкретный экземпляр класса в Java? - PullRequest
3 голосов
/ 30 ноября 2011

У меня есть класс, который будет получать данные из сокета. Я должен создать 5 экземпляров этого класса в соответствии с несколькими условиями. Как я могу проверить, работает ли определенный момент этого класса, другими способами создать тот конкретный экземпляр, который отсутствует? Это некоторый фрагмент кода:

public void checkReachabilityOfHosts(){

    String[] host = {"192.168.30.190", "", "", "", "" };

    for (String h : host) {
        if (h.length() > 0) {
            if (isHostReachable(h)) {
                DeviceByteReader deviceByteReader = new DeviceByteReader(h, 3001);
                deviceByteReader.setUpConnection();
                deviceByteReader.getSMessage();
                deviceByteReader.tearDownConnection();
            } else {
                return;
            }
        }else {
            return;
        }
    }
}

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Используйте шаблон фабрики : присвойте каждому экземпляру постоянный ключ (например, IP-адрес).

У фабрики есть кэш, который использует ключ для поиска существующих экземпляров.Если в кеше нет экземпляра, создайте новый.

1 голос
/ 30 ноября 2011

Вы можете изменить свой класс и добавить к нему специальное поле идентификатора. Этот идентификатор будет сгенерирован в конструкторе класса, и вы всегда можете идентифицировать свой экземпляр. Для генерации идентификатора используйте либо метку времени в миллисекундах, либо случайное число, либо счетчик статических экземпляров, либо, если вы хотите создать действительно уникальный идентификатор во всем мире, используйте UUID.randomUUID().

Другое решение - просто использовать System.identityHashCode(obj). Это уникально для всех объектов в текущем экземпляре вашей JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...