thisの記事では、以下の例では、 "this"の参照が暗黙的にエスケープされていることが示唆されています。コンストラクタから "this"の参照を公開する
ここで、非静的な内部クラスのインスタンスは、外部クラスのインスタンスを使用して構築できます。これは、次の例では、EventListener2
のコンストラクタで新しいインスタンスEventListener
が作成され、 "this"がどのようにエスケープされるか暗黙のうちに。内部クラスが外部クラスへの暗黙の参照を保持していることを知っていますが、記事 "this"が暗黙的にエスケープされ、 "this"がどのようにエスケープされているか理解できない場合、不完全に構築されたEventListener
はエスケープされます「これ」のために同意することができません。
public class EventListener2 {
public EventListener2(EventSource eventSource) {
eventSource.registerListener(
new EventListener() {
public void onEvent(Event e) {
eventReceived(e);
}
});
}
public void eventReceived(Event e) {
}
}