class Test { class Event {} class KeyEvent extends Event { int getCode() { return 0; } } interface EventListener { void handle(T event); } class EventType{} static final EventType KEY_PRESSED = null; { addEventHandler(KEY_PRESSED, keyEvent -> { int i = keyEvent.getCode(); }); } public final void addEventHandler(final EventType eventType, final EventListener listener) {} }