2013-12-03 5 views
1

следующий короткий учебник http://www.rgagnon.com/javadetails/java-0095.html Я пытаюсь получить мой клиент IP-адрес.Как автоматически инициализировать статическую переменную, вызывающую InetAddress.getLocalHost()?

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

private static InetAddress thisIp = InetAddress.getLocalHost(); 

Но Затмение дать мне следующее сообщение об ошибке: Необработанное исключение типа UnknownHostException

Так что, я думаю, что проблема в том, что я не могу назвать этот код:

InetAddress.getLocalHost(); 

в статическую переменную, но я должен сначала объявить статическую переменную, а затем инициализировать ее в каждом методе, который ее использует.

Проблема, в которой я нуждаюсь в ней, в тест JUnit, и это очень плохо инициализировать его каждый раз во все методы @test !!!

Итак, что я могу сделать, чтобы избежать инициализации в каждом методе тестирования? Есть еще один способ инициализировать его только один раз? Могу ли я создать метод инициализации, который будет автоматически выполняться в начале при запуске моего тестового класса? Как?

Tnx

Andrea

ответ

5

Попробуйте инициализировать на статический блок,

private static InetAddress thisIp; 

static{ 
    try { 
     thisIp = InetAddress.getLocalHost(); 
    } catch (UnknownHostException ex) { 

    } 
} 
2

Вы можете использовать статический блок инициализации:

class YourClass { 

    private static InetAddress thisIp; 

    static { 
     try { 
     thisIp = InetAddress.getLocalHost(); 
     } catch(Exception ex) { 
     Logger.log(ex); 
     } finally { 
     ... 
     } 
    } 
    ... 
} 

Этот блок может пойти в любой момент в классе, вне какого-либо метода.

+0

ттт, что это? как? – AndreaNobili

Смежные вопросы