我正在學習java泛型,並試圖在事件 之前實現它,因爲我曾考慮過使用多態,但由於我希望每個事件向處理程序的啓動方法發送不同的值,不要這樣做。使用泛型的java事件
這是我的事件處理程序:
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);
}
}
}
我的問題是它是如何正確擴展它,爲什麼有趣ction startEventAction在最後一個代碼塊(MyEvent)中不存在MyHandler 回答將非常感謝。
在Java中沒有這樣的模板。例如,它被稱爲泛型,並不像「C++」中的模板。 – maba
好的抱歉,我知道這是泛型,但這只是語義學..我知道差異,但這不是我的問題 –
現在這裏是固定的 –