Статическая инициализация переменных java
как инициализировать закрытый статический член класса в java.
пытается выполнить следующее:
public class A {
private static B b = null;
public A() {
if (b == null)
b = new B();
}
void f1() {
b.func();
}
}
но при создании второго объекта класса A, а затем при вызове f1(), я получаю исключение с нулевым указателем.
Ответы
Ответ 1
Предпочтительными способами инициализации статических элементов являются (как упоминалось ранее)
private static final B a = new B(); // consider making it final too
или для более сложного кода инициализации вы можете использовать статический блок инициализатора:
private static final B a;
static {
a = new B();
}
Ответ 2
Ваш код должен работать. Вы уверены, что разместили свой точный код?
Вы также можете инициализировать его более непосредственно:
public class A {
private static B b = new B();
A() {
}
void f1() {
b.func();
}
}