使用反射/将List转换为Var Args调用方法

jav*_*thu 3 java reflection list invoke variadic-functions

我有一个参数列表,我有方法名称.我想使用反射调用方法.当我检查Method.invoke的java文档时,它就像Method.invoke(object o,Object args ...).我知道第一个参数传递的内容(即实例方法调用哪个方法的实例)和args是方法的参数.

但是现在我有了包含要传递给方法的值的列表.

比如说:我想调用方法ClassName.methodName(String,int,int),我有一个包含{val1,3,4}的List.

使用反射可能类似于Method.invoke(classNameInstance,??????).但我不知道如何将参数列表转换为varargs并传递.

一种方法可能是如果我知道列表大小是3然后我可以编写Method.invoke(classNameInstance,list.get(0),list.get(1),list.get(2)).

但是我想动态调用的一些方法需要0到12个参数.所以创建switch case并编写12个案例看起来并不"好".每个都将检查参数的数量,并使用参数构建单独的调用.

除了使用开关盒外,还有什么方法可以解决这个问题?

任何帮助将不胜感激.

BaS*_*che 8

符号对象...仅仅意味着对象[].它只是Arraynotation的语法糖.传递一个数组,它会工作.