문제

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();
}

다른 팁

코드가 작동해야합니다. 정확한 코드를 게시하고 있습니까?


더 직접 초기화 할 수도 있습니다.

    public class A {

      private static B b = new B();

      A() {
      }

      void f1() {
        b.func();
      }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top