public class Person {
private int age;
public static void main(String[] args) {
Class<?> clazz = Person.class;
try {
Object o = clazz.newInstance();
Method setAge = clazz.getMethod("setAge",int.class);
Method invoke = setAge.getClass().getMethod("invoke", Object.class, Object[].class);
Object[] params = {12};
invoke.invoke(setAge,o,params);
System.out.println(o);//結果:Person{age=12}
/*還可以這樣……
Object o = clazz.newInstance();
Method setAge = clazz.getMethod("setAge",int.class);
Method invoke = setAge.getClass().getMethod("invoke", Object.class, Object[].class);
Method invoke2 = setAge.getClass().getMethod("invoke", Object.class, Object[].class);
Object[] params = {12};
Object[] params2 = {o,params};
invoke2.invoke(invoke,setAge,params2);
System.out.println(o);
*/
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
'}';
}
}
複製程式碼
用反射呼叫Method類的invoke方法
相關文章
- method.invoke(...)反射點反射
- 如何用反射呼叫泛型類的方法反射泛型
- C# 反射呼叫擴充類方法C#反射
- java反射呼叫set和get方法的通用類Java反射
- c# 類的反射例項 (GetType().Invoke().GetMethod().CreateInstance())C#反射
- 在例項中呼叫 Invoke 型別的類型別
- java反射構建物件和方法的反射呼叫Java反射物件
- 【雜談】對RMI(Remote Method Invoke)的認識REM
- c# 反射呼叫方法C#反射
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- PHP --反射 --獲取類的方法PHP反射
- Attempt to invoke virtual method ‘int android.view.View.getImportantForAccessibility()‘ on a null obAndroidViewImportNull
- java 反射之操作靜態MethodJava反射
- 反射--Class物件功能--獲取Method反射物件
- 安裝redis cluster時:undefined method `invoke_with_build_args' for nil:NilClassRedisUndefinedUI
- java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Intent.getI...JavaNullExceptionAndroidIntent
- php中呼叫類的私有方法PHP
- 深入理解Java中的反射機制和使用原理!詳細解析invoke方法的執行和使用Java反射
- Day30-方法的分類和呼叫
- C# 透過反射(Reflection)呼叫不同名泛型方法C#反射泛型
- unity延時方法Invoke和InvokeRepeatingUnity
- Java 方法的反射Java反射
- dubbo原始碼分析之服務呼叫方發起呼叫(入口InvokerInvocationHandler.invoke)原始碼
- Application 類 make 方法呼叫棧流程圖APP流程圖
- P/Invoke之C#呼叫動態連結庫DLLC#
- 工廠方法(Factory Method)
- 微服務間的方法呼叫和應用內方法呼叫有啥區別微服務
- 關於PHP this 和 self 呼叫類方法的區別PHP
- 方法的形式引數是類名時如何呼叫
- MFC之動態呼叫自己寫的類庫中的類的成員方法
- 反射的應用反射
- Java反射與hook混用反射某支付的方法Java反射Hook
- 類的反射和依賴注入反射依賴注入
- Java中的類反射機制Java反射
- Spring AOP呼叫本類方法沒有生效的問題Spring
- dedecms文章標題呼叫文章分類名稱的方法
- Method ReflectionParameter::getClass() 解決方法
- Method Swizzling 為什麼要先呼叫 class_addMethod?