sp0*_*00m 10 java final field initialization
可能重复:
如何处理抛出已检查异常的静态最终字段初始值设定项
在这个例子中,我得到了错误的空白最后一个字段myClass的可能不被初始化:
private final static MyClass myClass; // <-- error
static {
try {
myClass = new MyClass(); // <-- throws exception
myClass.init();
} catch (Exception e) {
// log
}
}
Run Code Online (Sandbox Code Playgroud)
在那个例子中,我得到错误最终字段myClass可能已经被分配:
private final static MyClass myClass;
static {
try {
myClass = new MyClass(); // <-- throws exception
myClass.init();
} catch (Exception e) {
myClass = null; // <-- error
// log
}
}
Run Code Online (Sandbox Code Playgroud)
那个问题有什么解决方案吗?
kut*_*kem 14
private final static MyClass myClass;
static {
MyClass my;
try {
my = new MyClass();
my.init();
} catch (Exception e) {
my = null;
// log
}
myClass = my; //only one assignment!
}
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 10
这是一个解决方案:
private final static MyClass myClass = buildInstance();
private static MyClass buildInstance() {
try {
MyClass myClass = new MyClass();
myClass.init();
return myClass;
} catch (Exception e) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15630 次 |
| 最近记录: |