我尝试用数据实现一个简单的类型安全事件调度程序,即除了事件之外还可以传递任何数据。我发现了很多类型安全的事件调度程序问题或任何其他示例,但似乎没有人能解决我的问题。这是我到目前为止得到的:
public interface EventDispatcher {
<T> void registerCallback(Event<T> event, BiConsumer<T, Long> callback);
<T> void event(Event<T> event, T t, long param);
}
和
public interface Event<T> {
String name();
}
这实际上有效(我有一个 EventDispatcher 接口的工作实现),可以通过使用 Enums 来“实现”事件接口,如下所示:
public enum StringEvent implements Event<String> {
EVENT1,
EVENT2
}
我不满意的是,我必须为所有要传递给调度程序的对象创建不同的枚举。我在想这样的事情
public enum Events {
EVENT1(String.class),
EVENT2(String.class),
EVENT3(Long.class);
Events(Class<T> clazz) {
...
}
...
}
但这似乎并没有导致可以在事件调度程序中使用的事件对象......有什么想法吗?
幕布斯6054654
相关分类