質問: これまでは、あまり深く考えず、何かのイベントを検知する際は、EventListenerをimportすればいいと考えておりました。 しかし、EventListenerの内部的な処理がどうしても気になり、調べております。 以下のようなページなどはあるものの、内部的な処理まではわかりませんでした。 EventListenerのhandleEventメソッドで色々と処理をしているのかと思われますが、 handleEventのソースコードを見ることはできないのでしょうか? javaを例に上げておりますが、必ずしもjavaでなくても構いません。 宜しくお願いします。
回答: > > EventListener#handleEventのソースコード > > > JDKをダウンロード、インストールして、例えば`C:\Program Files\Java\jdk1.8.0_77\src.zip`を展開すれば、`src\org\w3c\dom\events\EventListener.java`を見ることができますが、Document Object Model Eventsの`EventListener`はインターフェイスなので`handleEvent`メソッドは宣言のみです。 > > 何かのイベントを検知する際は、EventListenerをimport ... > > ... > > EventListenerの内部的な処理... > > > については、求めているものがよくわかりません。通常リスナの実装はイベントを受け取る側(ユーザなど)が、例えば`javascript`なら以下のような感じで作成するのではないでしょうか。 ``` node.addEventListener("click", function(e) { log("click!"); }, false); ``` そういう意味ではなく、これらの`EventListener`がイベント処理システム内部でどのように扱われているか(イベントを発生するオブジェクト側での内部処理)が知りたいのなら、`com/sun/org/apache/xerces/internal/dom/DocumentImpl.java`などが参考になりそうです。 * `DocumentImpl#addEventListener(...)`でリスナが登録される * `DocumentImpl#dispatchEvent(...)`メソッド内で`EventListener#handleEvent()`が呼ばれる > > javaを例に上げておりますが、必ずしもjavaでなくても構いません。 > > > 一般的なUIのイベント処理について知りたい場合は、Observer パターン - Wikipediaあたりから調べる方が簡単かもしれません。