我正在学习 java 泛型,并试图在有人问之前为事件实现它,我考虑过使用多态性,但是由于我希望每个事件都向处理程序的 start 方法发送不同的值,所以我不能这样做。
这是我的事件处理程序:
public class MyHandler {
public void startEventAction(int num) {
//do something with num
}
}
这是我的模板事件:
public abstract class SomeEvent<E> {
protected List<E> handler_list = new LinkedList<E>();
public SomeEvent() {
}
public Boolean addHandler(E handler) {
return handler_list.add(handler);
}
public Boolean removeHandler(E handler) {
return handler_list.remove(handler);
}
}
并且事件本身是:(现在我知道像这样扩展 SomeEvent 可能是错误的,但它似乎有效)
public class MyEvent<MyHandler> extends SomeEvent<MyHandler> {
public void executeHandlers() {
for (MyHandler handler : handler_list) {
//Exception here!!
handler.startEventAction(num);
}
}
}
我的问题是如何扩展它是正确的,为什么在最后一个代码块(对于 MyEvent)中 MyHandler 不存在函数 startEventAction 将非常感谢。