【发布时间】:2011-06-16 07:50:34
【问题描述】:
我有一个参数列表和方法名称。我想使用反射调用该方法。 当我检查 java 文档中的 Method.invoke 时,它类似于 Method.invoke(object o, Object args...) 。 我知道要为第一个参数传递什么(即,如果是实例方法,则调用哪个方法的实例),而 args 是该方法的参数。
但是现在我有了一个包含要传递给方法的值的列表。
例如:我想调用方法 ClassName.methodName(String , int, int) 并且我有一个包含 {val1, 3, 4} 的列表。
使用反射可能类似于 Method.invoke (classNameInstance, ??????)。但我不确定如何将参数列表转换为可变参数并通过。
一种方法可能是如果我知道列表大小为 3,那么我可以编写 Method.invoke (classNameInstance, list.get(0), list.get(1), list.get(2))。
但是我想动态调用的一些方法需要 0 到 12 个参数。因此,创建 switch case 并编写 12 个 case 看起来并不“好”。每个都将检查参数数量并使用参数构建单独的调用。
除了使用 switch case 有什么办法吗?
任何帮助将不胜感激。
【问题讨论】:
标签: java list reflection invoke variadic-functions