每个内部类实例都“生活”在其外部类的实例中。问题是-当内部类没有指向其外部类实例的成员时,如何在给定内部类实例的情况下引用外部类的实例?
例如:下面,方法check()
从Outer
内部提供对Inner
类实例的所需引用,以最终使用。
public class Outer {
int cnt = 0;
class Inner {
boolean check() {
return cnt==10;
}
}
public static void stuff(Outer.Inner in) {
if (in.check())
// if (<cnt value of its enclosing Outer class instance is 10>)
// do sth here
;
}
}
但是-假设方法check()
不存在。
public class Outer {
int cnt = 0;
class Inner {
}
public static void stuff(Outer.Inner in) {
if (<cnt value of its enclosing Outer class instance is 10>)
// do sth here
;
}
}
然后,引用Outer.Inner in
的外部类实例的语法是什么,以便人们可以引用该实例的cnt
成员并从那里进行而无需更改{{ 1}}是否以任何方式提供类代码?
注意:见Reference outer class instance from inner class和How to refer to Enclosing class from Inner class?等其他讨论。我希望不是从内部类实例本身内部到达外部类实例。
TIA。
// ----------------
编辑:
黑体是线索的关键部分。
答案 0 :(得分:2)
我认为没有帮助,您无法做到这一点。您需要添加一种方法来返回封闭的实例。
Referencing an enclosing instance from an inner class
public class Outer {
int cnt = 0;
class Inner {
boolean check() {
return cnt==10;
}
Outer getOuter() { return Outer.this; }
}
public static void stuff(Outer.Inner in) {
int count = in.getOuter().cnt;
}
}