我正在阅读 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
封闭类”。幸运的是,每个人都得到了正确的版本。