为什么接口(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/