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アクセスできると思います。次のように実装するとします。EventListenerThisEscapeEventSource
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た。幸いなことに、誰もが適切なバージョンを入手できました。