共計(jì) 825 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
使用 Java 反射執(zhí)行帶參數(shù)的方法,需要通過(guò) Method 類的 invoke() 方法來(lái)實(shí)現(xiàn)。invoke() 方法接收兩個(gè)參數(shù):需要執(zhí)行的對(duì)象和方法的參數(shù)列表。
下面是一個(gè)示例代碼:
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 對(duì)象
Class cls = ReflectExample.class;
// 創(chuàng)建 ReflectExample 對(duì)象
Object obj = cls.getDeclaredConstructor().newInstance();
// 獲取 printMessage 方法
Method method = cls.getDeclaredMethod("printMessage", String.class);
// 執(zhí)行方法
method.invoke(obj, "Hello, World!");
}
}
在上述示例中,首先獲取 ReflectExample 類的 Class 對(duì)象,然后使用 Class 對(duì)象創(chuàng)建 ReflectExample 對(duì)象。接下來(lái),通過(guò) Class 對(duì)象獲取 printMessage 方法,并指定方法的參數(shù)類型為 String。最后,使用 invoke() 方法執(zhí)行 printMessage 方法,并傳入對(duì)應(yīng)的參數(shù)值。
需要注意的是,如果被調(diào)用的方法是非靜態(tài)方法,那么 invoke() 方法的第一個(gè)參數(shù)必須是實(shí)際對(duì)象的引用;如果被調(diào)用的方法是靜態(tài)方法,那么可以將第一個(gè)參數(shù)設(shè)置為 null。
另外,需要處理異常,因?yàn)樵诜瓷湔{(diào)用方法時(shí)可能會(huì)拋出異常,所以需要使用 try-catch 或者在方法簽名上拋出異常。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!