私はイベント処理システムに取り組んでおり、そのすべての側面を自動化しようとしています。そのために、イベントハンドラーを自動的に起動するメソッドを作成しようとしていますが、壁にぶつかりました。
パラメーターによってメソッドを呼び出すメソッドを作成しようとしていますが、名前や内容は気にせず、パラメーターの型だけを気にします。問題は、特定のメソッドをパラメーターの型で呼び出すメソッドを作成する方法がわかりません。
私が達成しようとしていることをよりよく理解してもらうための簡単な例です。
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 は、発生したイベントを処理するすべてのメソッドを含むクラスです。したがって、上記の例で発生したイベントは、Event クラスを拡張する DiceRollEvent であるとしましょう。DiceRollEvent を受け取るメソッドは、例によって呼び出されます。上記のように、次のようにします。
public void diceRollHandler(DiceRollEvent e) {
int turnNo = e.getTurnNumber();
System.out.println("This is the 34th turn of the game.");
}
これにより、最終出力は「これはゲームの 34 ターン目です」となります。
これは私が壁にぶつかったところです。クラスが特定のパラメーター型のみを含むメソッドを呼び出すようにするにはどうすればよいですか?
ご協力いただきありがとうございます!