java - 在Vaadin中,为什么在ClickListener接口(interface)中接口(interface)方法反射(reflect)为公共(public)静态方法对象?

标签 java vaadin

为什么接口(interface)方法会体现为public static Method对象?

例如,来自 Vaadin 的 Javadoc Button.ClickListener :

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 :

public void addClickListener(ClickListener listener) {
    addListener(ClickEvent.class, listener,
            ClickListener.BUTTON_CLICK_METHOD);
}

Vaadin 使用单个 EventRouter 的原因对于组件中的所有事件,调度基于事件类型(或事件父/子类型),并且 Method 用于使用反射查找正确的方法来调用。 p>

关于java - 在Vaadin中,为什么在ClickListener接口(interface)中接口(interface)方法反射(reflect)为公共(public)静态方法对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36423589/

相关文章:

java - request.getHeader ("authorization") 从 Tomcat header 中丢失

Grails - 从 war 中运行时位于不同路径的图像

java - 有效比较值

java - 将 ArrayList 的内容输出为逗号分隔的字符串

java - Vaadin 流不支持操作异常 : Confirmed duplicate message from the client

java - 菜单布局+一些静态和可切换内容

java - Vaadin 7 从客户端向服务器发送数据

spring - 如何将新的 Vaadin Spring Boot 插件与 Vaadin4Spring EventBus 一起使用

java - 如何将 "add parsed string that used filter"转换为字符串 ArrayList

用于运行交互式 shell 的 java Runtime.exec 挂起