遵循这个简短的教程http://www.rgagnon.com/javadetails/java-0095.html我试图让我的客户 IP地址。
与教程的唯一区别是我希望我的IP地址放在静态变量中,所以我按以下方式进行:
private static InetAddress thisIp = InetAddress.getLocalHost();
但Eclipse给出了以下错误消息:未处理的异常类型UnknownHostException
所以,我认为,问题在于我无法调用此代码:
InetAddress.getLocalHost();
进入静态变量,但我首先声明静态变量,然后将其初始化为每个使用它的方法。
我在JUnit测试中需要它的问题,这非常糟糕,每次都将它初始化为所有@test方法!!!
那么,我可以做些什么来避免在每个测试方法中初始化它?还有一些其他方法只能初始化一次吗?我可以创建一个初始化方法,在运行我的测试类时会自动执行吗?怎么样?
TNX
安德烈
答案 0 :(得分:5)
尝试初始化静态块,
private static InetAddress thisIp;
static{
try {
thisIp = InetAddress.getLocalHost();
} catch (UnknownHostException ex) {
}
}
答案 1 :(得分:2)
您可以使用静态初始化块:
class YourClass {
private static InetAddress thisIp;
static {
try {
thisIp = InetAddress.getLocalHost();
} catch(Exception ex) {
Logger.log(ex);
} finally {
...
}
}
...
}
除了任何方法之外,该块可以在类中的任何位置进行。