【发布时间】:2016-02-20 10:15:03
【问题描述】:
我无法理解为什么私有变量为空,即使它是内联初始化的。这是我的代码的 sn-p:
public abstract class A {
public A() {
initialize();
}
protected abstract void initializeLayout();
protected void initialize() {
// Do something
initializeLayout();
}
}
public abstract class B extends A {
private final Object myVariable = new Object();
@Override
protected void initializeLayout() {
// Do something with myVariable
}
}
好吧,当这段代码到达 B.initailizeLayout 时,myVariable 为 NULL。我认为内联字段在其他所有内容之前初始化,甚至在构造函数之前。我有什么不对吗?
【问题讨论】:
-
varType到底是什么?仅指占位符?就像任何物体一样? -
是的,它只是一个占位符。我应该使用更合适的东西,即使我认为它很清楚
-
只需使用
Object作为占位符 -
Suggested reading。根据经验,从构造函数调用可覆盖的方法是 VBI(非常糟糕的主意)。
标签: java inheritance abstract