【发布时间】:2014-03-05 22:39:50
【问题描述】:
以下代码无法编译(“变量名可能尚未初始化”):
import javax.management.*;
public class Main {
public final static ObjectName name;
static {
try {
name = new ObjectName("abc");
} catch (final Exception e) {
System.exit(1);
}
}
}
但是,以下代码也无法编译(“变量名可能已被分配”):
import javax.management.*;
public class Main {
public final static ObjectName name;
static {
try {
name = new ObjectName("abc");
} catch (final Exception e) {
name = null;
System.exit(1);
}
}
}
我不认为编译器对这两种情况都是正确的,但无论如何我们应该如何初始化静态最终 ObjectName?
【问题讨论】:
-
我想。当你使用final时,它应该在你声明自己时被初始化。请尝试此逻辑并告诉您是否仍然出现错误
-
为什么
ObjectName构造函数无论如何都会抛出异常?这就是代码的味道。 -
@DanTemple 构造函数抛出异常是完全合法的。代码气味在这里是另一回事。