gpt4 book ai didi

java - 从内部类对象获取外部类对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:33 28 4
gpt4 key购买 nike

我有以下代码。我想获取外部类对象,使用它创建内部类对象inner。我该怎么做?

public class OuterClass {

public class InnerClass {
private String name = "Peakit";
}

public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
// How to get the same outer object which created the inner object back?
OuterClass anotherOuter = ?? ;

if(anotherOuter == outer) {
System.out.println("Was able to reach out to the outer object via inner !!");
} else {
System.out.println("No luck :-( ");
}
}
}

编辑:好吧,有些人建议通过添加方法来修改内部类:

public OuterClass outer() {
return OuterClass.this;
}

但是如果我无法控制修改内部类,那么(只是为了确认)我们是否有其他方法从内部类对象获取相应的外部类对象?

最佳答案

在内部类本身中,您可以使用OuterClass.this。该表达式允许引用任何词汇上封闭的实例,在 JLS 中被描述为 Qualified this .

我不认为有一种方法可以从内部类的代码外部获取实例。当然,您随时可以介绍自己的属性(property):

public OuterClass getOuter() {
return OuterClass.this;
}

编辑:通过实验,看起来保存对外部类的引用的字段具有包级访问权限 - 至少对于我正在使用的 JDK 来说是这样。

编辑:使用的名称 (this$0) 在 Java 中实际上有效,尽管 JLS不鼓励其使用:

The $ character should be used only in mechanically generated source code or, rarely, to access pre-existing names on legacy systems.

关于java - 从内部类对象获取外部类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43639952/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com