Вы можете создать свой собственный EventHandler
интерфейс для обработки нескольких событий
public interface MultipleEventsHandler extends EventHandler {
void onMyEvent(MyEvent event);
void onMyOtherEvent(MyOtherEvent event);
}
Затем в ваших классах событий вы можете определить, какой из методов должен быть вызван
public class MyEvent extends GwtEvent<MultipleEventsHandler> {
public static final Type<MultipleEventsHandler> TYPE = new Type<MultipleEventsHandler>();
@Override
public Type<MultipleEventsHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(MultipleEventsHandler handler) {
handler.onMyEvent(this);
}
}
public class MyOtherEvent extends GwtEvent<MultipleEventsHandler> {
public static final Type<MultipleEventsHandler> TYPE = new Type<MultipleEventsHandler>();
@Override
public Type<MultipleEventsHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(MultipleEventsHandler handler) {
handler.onMyOtherEvent(this);
}
}
Если вы просто хотите уменьшить количество классов / интерфейсов, вы можете поместить EventHandler
в классы событий, например,
public class MyEvent extends GwtEvent<MyEvent.Handler> {
public interface Handler extends EventHandler {
void onMyEvent(SomeEvent event);
}
public static final Type<MyEvent.Handler> TYPE = new Type<MyEvent.Handler>();
@Override
public Type<MyEvent.Handler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(MyEvent.Handler handler) {
handler.onMyOtherEvent(this);
}
}