我声明并立即实例化的字段是null
. 这是一个示例代码:
public class NullFieldSSCCE {
static abstract class Parent {
List<String> values;
Parent() {
values = getValues();
}
protected abstract List<String> getValues();
}
static class Child extends Parent {
String param1="test1";
String param2="test2";
Child() {
}
@Override
protected List<String> getValues() {
return Arrays.asList( new String[] {param1, param2} );
}
}
public static void main(String[] args) {
Child child = new Child();
System.out.println("Child p1="+child.values.get(0)+", p2="+child.values.get(1));
}
}
运行结果是
Child p1=null, p2=null
虽然我希望
Child p1=test1, p2=test2
这怎么可能?这些字段是在类的同时实例化的,不是吗?