将值List作为参数传递给函数

时间:2017-04-02 18:08:37

标签: java reflection

我使用反射处理Java类,我有一个不同类型对象的列表:

public List<Object> MethodSignatureObjects

并且,我需要使用以下逻辑来调用方法:

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

有什么方法可以将MethodSignatureObjects中包含的对象放在getDeclaredMethod上,我的意思是这样的:

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

其中parameters1,parameters2,参数n ....来自MethodSignatureObjects

我真的建议任何建议。

非常感谢你。

1 个答案:

答案 0 :(得分: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)