要通過反射機制調用某個類的方法,主要用到了下面這個方法:
public Object invoke(Object obj,Object... args)
這個方法對帶有指定參數的指定對象調用由此 Method
對象表示的底層方法。個別參數被自動解包,以便與基本形參相匹配,基本參數和引用參數都隨需服從方法調用轉換。
參數:
obj
- 從中調用底層方法的對象
args
- 用于方法調用的參數
返回:
使用參數 args
在 obj
上指派該對象所表示方法的結果
下面我寫了一個完整的例子來演示invoke的具體用法
package net.xsoftlab.baike;import java.lang.reflect.Method;public class Person { public static void main(String[] args) throws Exception { Class<?> clazz = Class.forName("net.xsoftlab.baike.Person"); // 調用Person類中的run方法 Method method = clazz.getMethod("run"); method.invoke(clazz.newInstance()); // Java 反射機制 - 調用某個類的方法1. // 調用Person的Speak方法 method = clazz.getMethod("Speak", int.class, String.class); method.invoke(clazz.newInstance(), 22, "小明"); // Java 反射機制 - 調用某個類的方法2. // age -> 22. name -> 小明 } public void run(){ System.out.PRintln("調用Person類的run方法"); } public void Speak(int age, String name){ System.out.println("調用Person類的Speak方法"); System.out.println("age -> " + age + ". name -> " + name); }}程序運行結果:
新聞熱點
疑難解答