【发布时间】:2019-01-26 23:45:45
【问题描述】:
每个内部类实例都“生活”在其外部类的一个实例中。问题是——当内部类没有指向其外部类实例的成员时,如何在给定内部类实例的情况下引用外部类的实例?
例如:在下面,方法check() 提供了来自Inner 中的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
;
}
}
但是 - 假设方法 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 成员并从那里在不更改Inner 类代码的情况下有什么办法吗?
注意:在其他一些讨论中看到 Reference outer class instance from inner class 和 How to refer to Enclosing class from Inner class?。我正在寻找外部类实例而不是内部类实例本身。
TIA。
//----------------
编辑:
以粗体显示线索的一个关键部分。
【问题讨论】:
-
cnt是一个实例变量,所以它不只是outer.cnt吗? -
@markspace - 好吧 - 这就是问题所在。你首先要得到
outer,这样你就可以参考它的成员cnt。 -
@Gab - 它是重复的。谢谢参考。
标签: java inner-classes