Я пытаюсь зарегистрировать ClickListener для кнопки. Я использую Vaadin 8. Этот слушатель должен быть реализован с использованием Proxy.
final Button button = new Button("Hello");
final Class<?> clickListenerClass = Button.ClickListener.class;
final Object clickListenerInstance = Proxy.newProxyInstance(clickListenerClass.getClassLoader(),
new Class[] {clickListenerClass}, (proxy, method, args) -> {
System.out.println("TEST");
return null;
});
button.addClickListener((Button.ClickListener)clickListenerInstance);
Вот трассировка стека (я пропустил свой код. Исключение происходит в последней строке приведенного выше фрагмента).
java.lang.NullPointerException: null
at com.sun.proxy.$Proxy20.hashCode(Unknown Source)
at com.vaadin.event.ListenerMethod.hashCode(ListenerMethod.java:571)
at java.util.HashMap.hash(HashMap.java:339)
at java.util.HashMap.put(HashMap.java:612)
at java.util.HashSet.add(HashSet.java:220)
at com.vaadin.event.EventRouter.addListener(EventRouter.java:64)
at com.vaadin.server.AbstractClientConnector.addListener(AbstractClientConnector.java:842)
at com.vaadin.ui.Button.addClickListener(Button.java:333)