gpt4 book ai didi

java - 如果匿名内部类有两个外部类,如何获取外部类的引用?

转载 作者:行者123 更新时间:2023-12-05 00:48:15 24 4
gpt4 key购买 nike

public class OuterClass {
public class InnerClass{
void test(){
};
}
}

class Client{
public void x(){}
public void lucian() {
OuterClass.InnerClass innerClass = new OuterClass().new InnerClass(){
void test() {
Client.this.x();
x();
******** // how can I get the reference of the OuterClass at here? ********
}
};
innerClass.test();
}
}

我知道编译器会为匿名内部类生成一个带有两个参数的构造函数,一个是客户端的引用,另一个是外部类,但是我如何才能像方法测试中的客户端引用一样获得外部类的引用( ) 使用 Client.this? 不是 Client.this!!但是 OuterClass 在 Client 中的引用。

最佳答案

您可以保存对 OuterClass 对象的引用(到目前为止您是匿名创建的):

class Client{

private OuterClass outerClass;

public OuterClass getOuterClass() {
return outerClass;
}

public void setOuterClass(OuterClass outerClass) {
this.outerClass = outerClass;
}

public void x(){
System.out.println("===");
}
public void lucian() {
OuterClass outerClass = new OuterClass();
setOuterClass(outerClass);
OuterClass.InnerClass innerClass = outerClass.new InnerClass(){
void test() {
Client1.this.x();
x();
System.out.println(getOuterClass());
}
};
innerClass.test();
}
public static void main(String[] args) {
Client client = new Client();
client.lucian();
}

关于java - 如果匿名内部类有两个外部类,如何获取外部类的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824470/

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