さて、私が知る限り、私はfinal
変数についてこれらのことを理解しています。
- 一度だけ割り当てる必要があります
- コンストラクターが完了する前に、すべての
final
変数を初期化する必要があります
上記を使用しているので、以下がどのように機能しないのかわかりません。
public class FinalTest implements AnotherClass {
private final Something something;
private final otherthing;
@Override
public void setStuff(Something something) {
this.something = something;
this.otherthing = new SomeClass(something);
}
public FinalTest(Something something) {
setStuff(something);
}
}
ここでは、コンストラクターが完了する前に、final
変数が設定されています。では、なぜコンパイラはそれに不満を言うのでしょうか?