MethodのinvokeメソッドによるJavaリフレクションの実装
Javaの反射的なMethodクラスには、メソッドを呼び出すためのinvokeメソッドが提供されています。invokeメソッドのシグネチャは以下の通りです:public Object invoke(Object obj, Object… args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException。ここで、objはメソッドを呼び出すオブジェクトを表し、argsはメソッドの引数を表します。
invokeメソッドを使うことで、実行時に任意のオブジェクトのメソッドを呼び出すことができます。以下にはサンプルコードが示されています:
import java.lang.reflect.Method;
public class ReflectDemo {
public static void main(String[] args) {
try {
// 获取String类的toUpperCase方法
Method method = String.class.getMethod("toUpperCase");
// 调用toUpperCase方法
String str = "hello";
Object result = method.invoke(str);
System.out.println(result); // 输出HELLO
} catch (Exception e) {
e.printStackTrace();
}
}
}
上記の例では、まずStringクラスのtoUpperCaseメソッドをgetMethodメソッドで取得します。次に、toUpperCaseメソッドをinvokeメソッドで呼び出し、文字列オブジェクトを引数として渡します。最後に、呼び出し結果を出力します。