Roh*_*nga 41 java static initialization
如何在java中初始化类的私有静态成员.
尝试以下方法:
public class A {
private static B b = null;
public A() {
if (b == null)
b = new B();
}
void f1() {
b.func();
}
}
Run Code Online (Sandbox Code Playgroud)
但是在创建类A的第二个对象然后调用f1()时,我得到一个空指针异常.
sfu*_*ger 79
初始化静态成员的首选方法是(如前所述)
private static final B a = new B(); // consider making it final too
Run Code Online (Sandbox Code Playgroud)
或者对于更复杂的初始化代码,您可以使用静态初始化程序块:
private static final B a;
static {
a = new B();
}
Run Code Online (Sandbox Code Playgroud)
你的代码应该有效.您确定要发布确切的代码吗?
您还可以直接初始化它:
public class A {
private static B b = new B();
A() {
}
void f1() {
b.func();
}
}
Run Code Online (Sandbox Code Playgroud)