2017-04-02 55 views
0

林通過使用反射上的Java類的工作,我有不同類型的對象的列表:傳遞值列表作爲參數的函數

public List<Object> MethodSignatureObjects 

和,我需要通過使用如下因素邏輯調用方法:

Class<?> c = Class.forName("class name"); 
    Method method = c.getDeclaredMethod ("method name", parameterTypes) 
    method.invoke (objectToInvokeOn, params) 

有沒有什麼辦法可以把載有關於getDeclaredMethod MethodSignatureObjects的對象,我的意思是,像這樣:

Method method = c.getDeclaredMethod (methodName, param1.class, param2.class, ..); 

其中參數1,參數2,參數n ....來自方法簽名對象

我真的appreaciate任何意見。

非常感謝。

+0

請出示你試圖調用該方法的實際簽名。 –

+0

請確保在發佈代碼行時縮進至少4個空格或使用{}圖標。你的第一行使用'List ',但是StackOverflow沒有將它解釋爲代碼,然後認爲''是一個HTML標記,並且沒有顯示出來。 – ajb

回答

0

你不能傳遞一個名單,但陣列的方法

// List<Object> methodSignatureObjects 

int size = methodSignatureObjects.size(); 
Class<?>[] asArray = new Class<?>[size]; 
for (int i = 0; i < size; i++) { 
    asArray[i] = methodSignatureObjects.get(i).getClass(); 
} 

Class<?> c = Class.forName("class name"); 
Method method = c.getDeclaredMethod("method name", asArray); 
method.invoke (objectToInvokeOn, params)