0
インタフェースメソッドがpublic static Methodオブジェクトとして反映されるのはなぜですか?例えばVaadinでは、なぜ、ClickListenerインターフェイスでは、インターフェイスメソッドがpublic static Methodオブジェクトとして反映されていますか?
は、Vaadin Button.ClickListenerのJavadocから:
インタフェースメソッドがpublic static Methodオブジェクトとして反映されるのはなぜですか?例えばVaadinでは、なぜ、ClickListenerインターフェイスでは、インターフェイスメソッドがpublic static Methodオブジェクトとして反映されていますか?
は、Vaadin Button.ClickListenerのJavadocから:
public interface ClickListener extends Serializable {
public static final Method BUTTON_CLICK_METHOD = ReflectTools
.findMethod(ClickListener.class, "buttonClick",
ClickEvent.class);
public void buttonClick(ClickEvent event);
}
Method
インスタンスは、イベント通知のために使用されます。これを定数として定義すると、他の場所で読みやすいコードになり、パフォーマンス上のメリットがあるかもしれません。
ClickListener
(または他のリスナー)が登録されている場合にはButton.addClickListener
の例を参照、使用されている:Vaadinコンポーネント内のすべてのイベントのための単一EventRouter
を使用することに使用される
public void addClickListener(ClickListener listener) {
addListener(ClickEvent.class, listener,
ClickListener.BUTTON_CLICK_METHOD);
}
理由、およびディスパッチはイベントタイプ(またはイベントスーパー/サブタイプ)に基づいて行われ、Method
はリフレクションを使用して呼び出す正しいメソッドをルックアップするために使用されます。
Gotcha、これはどういう使い方の例へのリンクがありません。 – Davos555
@ Davos555更新を参照 –