借用Java的Invoke反射,帶呼叫其他類的方法
類A中有一個成員是類B的物件c,如何在c中呼叫A的成員方法或者向A傳遞引數,發訊號。多謝。
回答:
可以使用invoke反射,實現這樣的機制。其實也就是Spring裡面的Ioc了。
最好是用第三方做執行載體。我這裡為了描述方便,也放在ClassB裡面的Object c透過Invoke呼叫這兩方法
import java.lang.reflect.Method;
public class ClassA {
//ClassA裡面有add、和StringAdd兩個不同方法。c是ClassB的Object
ClassB c=new ClassB();
public void add(Integer param1, Integer param2) {
System.out.println(param1 + param2);
}
public void StringAdd(String abc){
System.out.println("out"+abc);
}
public static void main(String[] args){
ClassA a=new ClassA();
try {
a.c.invokeMehton(a, "add",new Object[] {new Integer(100),new Integer(200)});//反射呼叫方法add
a.c.invokeMehton(a, "StringAdd",new Object[] {new String("abccc")});//反射呼叫方法StringAdd
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class ClassB{
public ClassB(){
System.out.println("this is ClassB");
}
public Object invokeMehton(Object owner,String methodName,Object[] args) throws Exception{
//根據methodName獲得owner裡面的方法。args是對應方案引數。
Class wnerClass=owner.getClass();
Class[] argsClass=new Class[args.length];
for(int i=0,j=args.length;i
}
Method method = ownerClass.getMethod(methodName, argsClass);
return method.invoke(owner, args);
}
}
輸出為
this is ClassB
300
outabccc
說明c呼叫Class方法成功。
可以看看設計模式和Invoke相關的文章,方便理解
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-625469/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用反射呼叫Method類的invoke方法反射
- java反射呼叫set和get方法的通用類Java反射
- java反射構建物件和方法的反射呼叫Java反射物件
- 如何用反射呼叫泛型類的方法反射泛型
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- c# 類的反射例項 (GetType().Invoke().GetMethod().CreateInstance())C#反射
- 在例項中呼叫 Invoke 型別的類型別
- C# 反射呼叫擴充類方法C#反射
- Java 方法的反射Java反射
- method.invoke(...)反射點反射
- 深入理解Java中的反射機制和使用原理!詳細解析invoke方法的執行和使用Java反射
- c# 反射呼叫方法C#反射
- PHP --反射 --獲取類的方法PHP反射
- Java中的類反射機制Java反射
- Java反射與hook混用反射某支付的方法Java反射Hook
- java反射之Class類Java反射
- Java基礎——方法的呼叫Java
- Service呼叫其他Service的private方法, @Transactional會生效嗎(上)
- php中呼叫類的私有方法PHP
- .NET Core反射獲取帶有自定義特性的類,透過依賴注入根據Attribute後設資料資訊呼叫對應的方法反射依賴注入
- 【Java】利用反射執行Spring容器Bean指定的方法,支援多種引數自動呼叫Java反射SpringBean
- Java jvm 類載入 反射JavaJVM反射
- Java的反射Java反射
- Java方法02:方法的定義和呼叫Java
- Java 通過反射獲取類的資訊(成員變數,成員方法,構造方法)Java反射變數構造方法
- Java的方法Scanner類Java
- laravel 在一個控制器的方法中呼叫其他控制器中的方法Laravel
- Day30-方法的分類和呼叫
- Java 方法中迴圈呼叫具有事務的方法Java
- MFC之動態呼叫自己寫的類庫中的類的成員方法
- Java列舉類、註解和反射Java反射
- Java知識點總結(反射-獲取類的資訊)Java反射
- Java的反射機制Java反射
- 說說java的反射Java反射
- 關於PHP this 和 self 呼叫類方法的區別PHP
- 方法的形式引數是類名時如何呼叫
- Java Object類的各個方法JavaObject
- 常用的Java類方法【轉載】Java
- Java中Object類的常用方法JavaObject