次のJavaクラス宣言について考えてみます。
public class Test {
private final int defaultValue = 10;
private int var;
public Test() {
this(defaultValue); // <-- Compiler error: cannot reference defaultValue before supertype constructor has been called.
}
public Test(int i) {
var = i;
}
}
コードはコンパイルされません。コンパイラーは、上記で強調表示した行について不平を言います。このエラーが発生するのはなぜですか?また、最善の回避策は何ですか?