予期しない動作の理由を突き止めるのに 1 時間以上費やしたに違いありません。フィールドが期待どおりに設定されていないことに気付きました。肩をすくめて先に進む前に、なぜこれがこのように機能するのかを理解したいと思います。
以下の例を実行すると、出力が true になると思いますが、false です。他のテストでは、そのタイプのデフォルト値が何であれ、常に取得することが示されています。
public class ClassOne {
public ClassOne(){
fireMethod();
}
protected void fireMethod(){
}
}
public class ClassTwo extends ClassOne {
boolean bool = true;
public ClassTwo() {
super();
}
@Override
protected void fireMethod(){
System.out.println("bool="+bool);
}
public static void main(String[] args) {
new ClassTwo();
}
}
出力:
bool=false