これは、私が取り組んでいるより大きな質問の短いサブ質問です。
8 行目の外部クラスの内部クラスのインスタンスを介して外部クラス フィールドにアクセスできないのはなぜですか?
- フィールドは内部クラスから見えます。
- この問題は、外側のクラスの非静的メソッドでも解決されません。
- フィールドの可視性は問題ではありません。どちらの方法でも内部クラスから見えます。
- フィールドは、内部クラスの (プライベート) ゲッターを介してアクセスできますが、私の問題の理由の 1 つは、それらを避けたいということです。
- これは、不変のビルダー パターンのバリエーションになるはずなので、外部クラスと内部クラスは密接な一貫性を持って開発されます。それが、ゲッターなしでフィールドに直接アクセスすることを敢えてする唯一の理由です。
public class OuterClass {
private static OuterClass instanceOf(InnerClass innerClass) {
return new OuterClass(innerClass.outerField);
}
public static OuterClass instanceOf(int arg) {
return new OuterClass(arg);
}
private int outerField;
private OuterClass(int arg) {
this.outerField = arg;
}
// Outer class getters...
public InnerClass build() {
return new InnerClass(this);
}
public class InnerClass {
private InnerClass(OuterClass outerClass) {
outerField = outerClass.outerField;
}
// Inner class setters......
public OuterClass build() {
return OuterClass.instanceOf(this);
}
} // End InnerClass
} // End OuterClass