我正在阅读 Java Concurrency in Practice 一书。在第 3.2 节中,它讨论了在发布内部类时转义外部类。现在我正在寻找使它成为可能的语法。假设我们有:
public class ThisEscape {
public Integer i = 47;
public ThisEscape(EventSource source) {
source.registerListener(
new EventListener() {
public void onEvent(Event e) {
doSomething(e);
}
});
}
}
如果我对转义外部类的理解是正确的,我假设可以EventSource以某种方式访问EventListener封闭类(在这种情况下ThisEscape)。假设我们实现EventSource如下:
public class EventSource {
public void registerListener(EventListener listener) {
// How does it have access to enclosing class of the listener variable i?
}
}
我们如何才能访问公共i变量registerListener?
刚刚发现一个错字。将“EventSource封闭类”替换为“EventListener封闭类”。幸运的是,每个人都得到了正确的版本。