invoke
方法用于在 Java 中动态调用方法。它的参数传递规则如下:
null
。Object
数组即可。以下是一个简单的示例:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class InvokeExample {
public static void main(String[] args) {
MyClass obj = new MyClass();
Class<?> clazz = obj.getClass();
try {
// 调用无参数的实例方法
Method method1 = clazz.getMethod("instanceMethod");
method1.invoke(obj);
// 调用带参数的实例方法
Method method2 = clazz.getMethod("instanceMethodWithParams", String.class, int.class);
method2.invoke(obj, "Hello", 42);
// 调用无参数的静态方法
Method method3 = clazz.getMethod("staticMethod");
method3.invoke(null);
// 调用带参数的静态方法
Method method4 = clazz.getMethod("staticMethodWithParams", String.class, int.class);
method4.invoke(null, "World", 100);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
class MyClass {
public void instanceMethod() {
System.out.println("Instance method called");
}
public void instanceMethodWithParams(String str, int num) {
System.out.println("Instance method with params called: " + str + ", " + num);
}
public static void staticMethod() {
System.out.println("Static method called");
}
public static void staticMethodWithParams(String str, int num) {
System.out.println("Static method with params called: " + str + ", " + num);
}
}
在这个示例中,我们使用反射获取了 MyClass
类的方法,并使用 invoke
方法动态调用它们。注意参数传递的顺序和类型。