重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Android(JAVA)のイベントリスナについて教えてください

>イベントリスナは、ひとつのコールバックメソッドを持つ View クラスのインターフェイスです。それらのメソッドは、リスナが登録されたビューでユーザがUI のアイテムにアクションを起こしたことがトリガとなり Android フレームワークにより呼び出されます
▽6.5 UIイベントハンドリング - ソフトウェア技術ドキュメントを勝手に翻訳
  https://sites.google.com/a/techdoctranslator.com …

・なぜ、コールバックメソッドをひとつしか持たないのでしょうか?
・複数持ってはいけないのでしょうか?
・インターフェイスだから?
・言語機能として複数保持出来ないことはないけれども、イベントリスナ的に分かりやすくするため(?)、敢えて機能毎に分けているのでしょうか?

■質問背景
・ドキュメント見てたらそうなってたので、なんでかな? と思い質問しました
・複数インターフェイスにそれぞれ唯一の抽象メソッドを持たせず、1つのインターフェイスに複数の抽象メソッドを持たせたほうが分かりやすいような気もするのですが…
「View.AllListener」に「onClick()」「onLongClick()」みたいなのは何故ダメなのでしょうか?

A 回答 (1件)

>・なぜ、コールバックメソッドをひとつしか持たないのでしょうか?


機能の付与はメソッド単位だからではないでしょうか?

>「View.AllListener」に「onClick()」「onLongClick()」みたいなのは何故ダメなのでしょうか?
いいと思います。自前でコールバックメソッドを持つ複数のインターフェースを継承する、
または実装する抽象クラスを作成すれば良いです。

ただ、MouseListenerで不要なメソッドを空実装するときに感じましたが、
Eclipseなどのクラスのアウトライン機能では空実装が判断できず、見渡しが悪い。
プログラムが無駄に肥大化する。
あとは、UnsupportedExceptionを投げるとかあるのかな?
この辺のインターフェースでは提供されているけど、
機能としては提供されていないメソッドへの対応はいまいち統一されていないので、
不要なメソッドは追加しない方針の方がいいかなーと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考になりましたー

お礼日時:2013/05/24 21:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!