Java 从内部类外部封闭内部类的外部类实例引用
每个内部类实例“生活”在其外部类的实例中。问题是-当内部类没有指向其外部类实例的成员时,如果给定内部类的实例,如何引用外部类的实例 例如:在下面的示例中,方法Java 从内部类外部封闭内部类的外部类实例引用,java,inner-classes,Java,Inner Classes,每个内部类实例“生活”在其外部类的实例中。问题是-当内部类没有指向其外部类实例的成员时,如果给定内部类的实例,如何引用外部类的实例 例如:在下面的示例中,方法check()从internal中提供了对Outer类实例的所需引用,以供最终使用 public class Outer { int cnt = 0; class Inner { boolean check() { return cnt==10; } } public static void stuff(O
check()
从internal
中提供了对Outer
类实例的所需引用,以供最终使用
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
;
}
}
那么,在中引用outer.Inner的外部类实例的语法是什么,这样就可以引用该实例的cnt
成员并从那里开始,而无需以任何方式更改内部
类代码?
注:见和其他一些讨论。我希望访问外部类实例,而不是从内部类实例本身
蒂亚
//----------------
编辑:
黑体字是线索的一个关键部分 我认为没有帮助你是做不到的。您需要添加一个方法来返回封闭实例
cnt
是一个实例变量,所以它不仅仅是outer.cnt
?@markspace-好吧-这就是Q。你首先要得到outer
,这样你就可以引用它的成员cnt
@Gab-它是重复的。参考thx。
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
;
}
}
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;
}
}