gpt4 book ai didi

java - 如何调用多个嵌套内部类的父方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:16:35 25 4
gpt4 key购买 nike

我想从B.f()调用A.f(),但两者都是内部类,如果我按照传统方式编写,则无法编译。有没有简单的方法,无需像代码中的 A _this 这样的临时变量?

class MyClass {
[...]
class A {
public void f(){System.out.println("A.f");};
public void g(){System.out.println("A.g");};
}
class B {
public void f(){System.out.println("B.f");};
}

public A a() {
return new A() {
public void g() {
// I want to avoid this step
final A _this = this;
new B() {
public void f() {
System.out.println("foo");
// this works
_this.f();
// but this does not compile
A.this.f();
}
}.f();
}
};
}
[...]
}

最佳答案

您需要将代码正确地括在括号中,然后 A.this.f() 可以正常编译,例如

class A {
public void f() {
System.out.println("A.f");
}

public void g() {
System.out.println("A.g");
}

public A a() {
return new A() {
public void g() {
=
new B() {
public void f() {
System.out.println("foo");
A.this.f();
}
}.f();
}
};
}

public static void main(String[] args) {
new A().a().g();
}
}

class B {
public void f() {
System.out.println("B.f");
}

}

更新:您可以将 _this.f(); 替换为 new MyClass().new A().f();,但这将导致创建新对象。

关于java - 如何调用多个嵌套内部类的父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27647466/

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