静态变量初始化的java(static variable initialization java)

2019-09-02 03:49发布

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

尝试以下操作:

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

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

但打造A级的第二个对象,然后调用F1(),我得到一个空指针异常。

Answer 1:

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

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

或者更复杂的初始化代码,你可以使用一个静态初始化块:

private static final B a;

static {
  a = new B();
}


Answer 2:

您的代码应该工作。 你确定你可以发布您的确切的代码?


你也可以更直接地将其初始化:

    public class A {

      private static B b = new B();

      A() {
      }

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


文章来源: static variable initialization java