我正在處理一個事件處理系統,並且我正在努力使其中的每個方面都自動化,爲此,我試圖創建一個方法來觸發事件處理程序時尚,但是我打了一堵牆。Java:調用具有特定類型參數的方法
我試圖做一個方法調用方法的參數,我不在乎他們的名字或內容,只是他們的參數類型。事情是,我不知道如何創建一個方法,通過它們的參數類型調用某些方法。
一個簡單的例子,讓你們更好地理解我試圖完成什麼。
public void invokeEvent(Event eventToBeInvoked) {
for(Method m : listenerClass.getMethods()) {
for(Parameter p : m.getParameters()) {
if(p.getClass().equals(eventToBeInvoked.getClass())) {
m.invoke(eventToBeInvoked);
}
}
}
}
listenerClass是包含所有處理事件時,他們被解僱的方法的類,因此可以說這是在上面的例子中觸發事件是DiceRollEvent它擴展了事件類,其接收的方法DiceRollEvent將由上面的例子中被調用,例如:
public void diceRollHandler(DiceRollEvent e) {
int turnNo = e.getTurnNumber();
System.out.println("This is the 34th turn of the game.");
}
,這將導致最終輸出是:「這是遊戲的第34匝。」。
這就是我碰壁的地方,我如何讓一個類只調用包含某些參數類型的方法?
謝謝您的協助!
我想你正在尋找多態方法? – Bono
是的,因爲它關於事件,它必須是多態才能通過事件,並且它只有1個方法來調用所有類型的事件,所有事件都必須擴展Event類 – Daedalus