从这些课程开始
public class Event {
private EventType eventType;
public EventType getEventType() {
return eventType;
}
public void setEventType(EventType eventType) {
this.eventType = eventType;
}
}
public class OneEvent extends Event {
public OneEvent() {
setEventType(EventType.ONE);
}
}
public interface EventProcessor<T extends Event> {
Stream<? extends Event> process(T element);
EventType getType();
}
public enum EventType {
ONE, TWO
}
我创建了实现它的 OneEventProcessor 和 TwoEventProcessor。
public class OneEventProcessor implements EventProcessor<OneEvent> {
@Override
public Stream<? extends Event> process(OneEvent element) {
return null;
}
@Override
public EventType getType() {
return EventType.ONE;
}
}
在另一个类中,我想将它们添加到地图类型-> 处理器中,然后检索和使用。
Map<EventType, EventProcessor<? extends Event>> map = new HashMap<>();
OneEventProcessor oep = new OneEventProcessor();
map.put(oep.getType(), oep);
public Stream<? extends Event> process(Event event) {
return map.get(event.getEventType()).process(event);
}
这不起作用,因为地图将检索 EventProcessor< ? 扩展事件 > 期望捕获 < ? 扩展事件 > 进程中的方法。
有什么办法可以解决这个问题吗?