java初始化静态variables

如何在java中初始化一个类的私有静态成员。

尝试以下方法:

public class A { private static B b = null; public A() { if (b == null) b = new B(); } void f1() { b.func(); } } 

但创build类A的第二个对象,然后调用f1(),我得到一个空指针exception。

初始化静态成员的首选方法是(如前所述)

 private static final B a = new B(); // consider making it final too 

或者对于更复杂的初始化代码,您可以使用静态初始化程序块:

 private static final B a; static { a = new B(); } 

你的代码应该工作。 你确定你正在发布你的确切代码吗?


你也可以直接初始化它:

  public class A { private static B b = new B(); A() { } void f1() { b.func(); } }