使用Java反射執行帶參數的方法,需要通過Method類的invoke()方法來實現。invoke()方法接收兩個參數:需要執行的對象和方法的參數列表。
下面是一個示例代碼:
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方法,并傳入對應的參數值。
需要注意的是,如果被調用的方法是非靜態方法,那么invoke()方法的第一個參數必須是實際對象的引用;如果被調用的方法是靜態方法,那么可以將第一個參數設置為null。
另外,需要處理異常,因為在反射調用方法時可能會拋出異常,所以需要使用try-catch或者在方法簽名上拋出異常。