java - 封闭来自外部内部类的内部类的外部类实例引用
问题描述
每个内部类实例都“生活”在其外部类的一个实例中。问题是 - 当内部类没有指向其外部类实例的成员时,如何在给定内部类实例的情况下引用外部类的实例?
例如:在下文中,该方法从内部提供对类实例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
并从那里开始而无需以任何方式更改Inner
类代码?
注意:见从内部类引用外部类实例和如何从内部类引用封闭类?在其他一些讨论中。我正在寻找外部类实例而不是内部类实例本身。
TIA。
//----------------
编辑:
将线索的一个关键部分加粗。
解决方案
我不认为你可以在没有帮助的情况下做到这一点。您需要添加一个方法来返回封闭的实例。
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;
}
}
推荐阅读
- android - Kotlin Realm 创建对象
- azure - 如何在 API 管理中禁用响应缓冲并强制立即刷新?
- python - 如何在python中将整数列表映射到带有额外文本的字符串列表?
- homebrew - 使用 Home-brew 安装 giter8 时出错
- c# - 如何为“in”参数修饰符设置 Moq 回调?
- apache-spark - 如何配置火花溢出到磁盘的位置?
- javascript - 如何在我的嵌入中调用 .username 属性?(discord.js)
- gnuplot - GnuPlot 在 x 轴上从零日开始绘制基于时间零的数据
- c# - C# 从 SQL Server 更改日期格式
- firebase - 'A non-null String must be provided to a Text widget' (Flutter)