我想知道下面的代码是否有意义,因为编译器警告说“空白的最终字段对象可能尚未初始化”。有更好的方法吗?
public abstract Test {
protected final ArrayList<Object> objects;
}
public TestSubA extends Test {
public TestSubA() {
objects = new ArrayList<Objects>(20);
// Other stuff
}
}
public TestSubB extends Test {
public TestSubB() {
objects = new ArrayList<Objects>(100);
// Other stuff
}
}
最佳答案
我会将字段设为 final 并强制构造函数向上传递值:
public abstract class Test {
private final ArrayList<Object> objects;
protected ArrayList<Object> getObjects() {
return objects;
}
protected Test(ArrayList<Object> objects) {
this.objects = objects;
}
}
public class TestSubA extends Test {
public TestSubA() {
super(new ArrayList<Object>(20));
// Other stuff
}
}
public class TestSubB extends Test {
public TestSubB() {
super(new ArrayList<Object>(100));
// Other stuff
}
}
关于java - 具有最终未初始化字段的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2327509/