일반 이벤트 시스템을 작성하려고합니다.일반적인 인터페이스와 Enum의 일반 확장
public interface GameEventHandler<I extends GameEvent<TYPE extends Enum<?>, ATT extends Enum<?>>> {
public void handleEvent(final GameEvent<TYPE, ATT>... e);
public void registerListener(final GameEventListener<I> listener,
final TYPE... type);
public void unregisterListener(final GameEventListener<I>... listener);
public void unregisterAllListener();
public void unregisterAllListener(final I... type);
public void processEvents();
public void processEvents(final int maxTimeInMS);
}
을하지만 그것은해야 생각 으로이 작동하지 않습니다이를 위해 나는 (하지 작업을 수행하는)이 같은 EventHandler
에 대한 인터페이스를 만들 수을하고 싶습니다.
이벤트 자체는 아주 간단 이는 일반 요소입니다 :
public class GameEvent<T extends Enum<?>, S extends Enum<?>> {
private HashMap<S, String> values;
private T type;
public void init(T type) {
this.type = type;
}
public T getType() {
return this.type;
}
public void addMessage(S t, String value) {
this.values.put(t, value);
}
public void getMessage(S t) {
this.values.get(t);
}
}
내가 그것을 만드는 DefaultHandler<GameEvent<TypeEnum, AttributEnum>>()
같은이 때문에 여전히 일반적인 일이하고 싶은 HandlerInterface
을 구현하는 경우. 그래서 인터페이스를 사용하여 자신의 핸들러를 만들거나 내가 제공하지만 여전히 자신의 Enum을 사용할 수있는 DefaultHandler
을 사용할 수 있습니다.
:
public interface GameEventHandler<I extends GameEvent<TYPE, ATT>, TYPE extends Enum<?>, ATT extends Enum<?>>
을하지만 내가 DefaultHandler를 일반
public class DefaultGameEventHandler implements GameEventHandler<GameEvent<EventTypes, AttributeTypes>, EventTypes, AttributeTypes>
// 일반적인되지 않은 이행을하지 않는 테스트입니다 Enums
그래서 내가 뭘 잘못하고 있니? 내가 원하는 것을 할 수 있습니까?