我想从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();
}
};
}
[...]
}
答案 0 :(得分:0)
您需要正确地将代码括在括号中,然后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();
,但这会导致创建新的对象。