这是我正在努力解决的一个更大问题的一个简短子问题。
为什么我不能通过第 8 行外部类中的内部类实例访问外部类字段?
- 该字段在内部类中可见。
- 对于外部类中的非静态方法,问题仍然存在。
- 字段的可见性并不重要。无论哪种方式,它都可以从内部类中看到。
- 可以通过内部类中的(私有)getter 访问该字段,但我的问题的原因之一是,我想避免这些。
- 它应该成为不可变构建器模式的变体,因此外部类和内部类是紧密连贯地开发的。这是我敢于直接访问字段而不使用 getter 的唯一原因。
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