从内部匿名类访问外部匿名类的方法
2022-09-01 20:37:12
我使用实例化另一个匿名类的方法实例化一个匿名类,并且从这个内部匿名类中,我想调用一个属于外部匿名类的方法。为了说明这一点,假设我有这个接口:
interface ReturnsANumber {
int getIt();
}
然后,在我的代码的某个地方,我这样做:
ReturnsANumber v = new ReturnsANumber() {
int theNumber() {
return 119;
}
public int getIt() {
// In a modern version of Java, maybe I could do
// var a = this;
// and then call a.theNumber();
ReturnsANumber w = new ReturnsANumber() {
int theNumber() {
return 1;
}
public int getIt() {
return this.theNumber();
}
};
return w.getIt();
}
};
System.out.println("The number is " + v.getIt());
问题:在最内层的方法中,我想调用属于最外层的匿名类。如何在不使用Java 10 var功能的情况下实现这一点(如代码中所述)。getIt
theNumber()
澄清:理想情况下,外部匿名类不需要知道内部类想要调用其方法。这个想法是想出一些代码,让内部类明确地调用外部类上的任何方法。theNumber
换句话说,如何使此代码显示:(而不是显示The number is 119
The number is 1
)
动机:有人可能会问我为什么要这样做:我正在编写某种代码生成器,并希望确保我正在生成的代码不是模棱两可的。