我正在研究一个事件处理系统,并且我正在尝试使其中的每个方面都自动化,为此,我试图创建一种以自动方式触发事件处理程序的方法,但是我碰壁了。
我试图创建一个通过参数调用方法的方法,我不关心它们的名称或内容,只关心它们的参数类型。问题是,我不知道如何创建一个通过参数类型调用某些方法的方法。
一个简单的例子,让你们更好地理解我想要完成的事情。
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,它扩展了 Event 类,接收 DiceRollEvent 的方法将被示例调用上面,像这样:
public void diceRollHandler(DiceRollEvent e) {
int turnNo = e.getTurnNumber();
System.out.println("This is the 34th turn of the game.");
}
这将导致最终输出为:“这是游戏的第 34 回合。”。
这是我碰壁的地方,我如何让一个类调用只包含某些参数类型的方法?
谢谢您的帮助!