문제
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();
}
}
제휴하지 않습니다 StackOverflow