静态变量初始化java


问题内容

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

尝试以下操作:

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

   void f1() {
         b.func();
   }
}

但是在创建类A的第二个对象然后调用f1()时,我得到了空指针异常。


问题答案:

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

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

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

private static final B a;

static {
  a = new B();
}