Java リフレクションで引数付きメソッドを実行する方法
Java リフレクションを利用して引数付きメソッドを実行する場合、Method クラスの invoke() メソッドを使用して実現できます。invoke() メソッドは、実行したいオブジェクトとメソッドのパラメーターリストの 2 つのパラメーターを受け取ります。
以下に、その例となるコードを示します。
import java.lang.reflect.Method;
public class ReflectExample {
public void printMessage(String message) {
System.out.println(message);
}
public static void main(String[] args) throws Exception {
// 获取ReflectExample类的Class对象
Class<?> cls = ReflectExample.class;
// 创建ReflectExample对象
Object obj = cls.getDeclaredConstructor().newInstance();
// 获取printMessage方法
Method method = cls.getDeclaredMethod("printMessage", String.class);
// 执行方法
method.invoke(obj, "Hello, World!");
}
}
まず、ReflectExample クラスの Class オブジェクトを取得します。次に、その Class オブジェクトを用いて ReflectExample オブジェクトを生成します。そして、Class オブジェクトから printMessage メソッドを取得し、メソッドの引数タイプを String に指定します。最後に、invoke() メソッドを用いて printMessage メソッドを実行し、対応する引数値を渡します。
呼び出すメソッドがstaticでなければinvokeメソッドの第1引数に実際のオブジェクトの参照を、staticメソッドであればnullを設定する必要があります。
また、メソッドをリフレクションで呼び出す際は例外が発生する可能性があるので、例外処理が必要であり、try-catchを用いるか、メソッドのシグネチャで例外をスローする必要がある。