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
方法動態調用它們。注意參數傳遞的順序和類型。