Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Listenerについて

仕事で使っているプログラムに、Listenerというinterfaceが定義されていて、実際イベントのListenerのように見えるのですが、一つ疑問点があります。このinterfaceはEventListenerを拡張していないのです。これではイベントをListenする機能は付かないですよね?

7

回答

78768

閲覧

7件の回答

評価

0

>このinterfaceはEventListenerを拡張していないのです。

必要としていないものなら必要ないです。

類似スレッド
http://219.94.131.140/bbs/answer.jsp?q_id=20060915164738471

評価

0

interfaceというものについての理解も
もう少しやってみるのがいいのかも?

評価

0

まあさん、ありがとうございます。

ウェブで見た限りでは、Listenerとなるinterfaceは必ずEventListenerインターフェイスを拡張していたので、疑問に思ったのです。いったいどのようにListenするのかと。これって、インターフェイスについて掘り下げてみてみれば理解できるのかな?

評価

0

まあさんがあげられているスレッドで、リスナが根本的にどういうものかを理解すれば、あえて継承する必要のないことが分かると思います。
疑問に思うのは大事なことなので、そこでじゃあ、そもそもリスナとはなんぞや、と考えてみましょう。

評価

0

>これって、インターフェイスについて掘り下げてみてみれば理解できるのかな?

いえ、インターフェイスの方は、どういう使い方がされるものか。とかかな

EventListenerインターフェイスの拡張についての疑問は、イベント/リスナとはどういうものかというのを掘り下げて行くのがいいんじゃないかと。

書こうかと思って削ったのは

EventListener = Event(リスナの請け負う機能,意味合いを示す名前) + Listener(リスナであることを示す名前)

これにインターフェイスをimplementしたことによって得られるものとかをあわせて考えてみるといいのかもしれません。
他にPropertyChangeListener(EventListenerを継承)とかあるけど、
EventListenerに属するものであることを明言したいとか(或いはPropertyChangeListenerに・・とか)、そのことを活用したいとか、(強く?)意識したりするのでもなければ、必ずしもそうである(implementしなければならない)必要はないだろうと思います。
(EventListenerをimplementしたって空だから・・とかいうところから・・とかいうのではないです)
「いや、イベントに関わるものだろう!絶対だ!」という考えもあるでしょうけど。

評価

0

まだ理解していませんが...

EventListenerは形だけを見せているもので、Listenerということが分かっていれば必ずしもimplementする必要がないということが分かりました。

イベントについての理解がまだ足りないみたいです。さらに勉強してみます。

評価

0

そうですね。
イベントというのは、(自分の作っているものと同じように)作られたプログラムなんですが、それが自動的に動いているように見えるので、異質なものに感じるのでしょう。
イベントリスナの呼び出しは、実際には自分で作っているメソッドの呼び出しと、同じものです。

標準のイベントへのリスナとしてEventListenerを用意してあるだけで、標準以外(自分で作った)のイベントへのリスナとして、自分で作ったListenerを使っているのでしょう。
どちらもやっていることは同じで、あるメソッドの中で、登録されたリスナクラスの、決まった名前のメソッドを呼び出しているだけです。

まあさんが、(最初にあげられているスレッドの中で)すでに書かれています。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。