0
我需要创建一个函数,它可以从任意字符串中创建一个类,并将参数数组传递给名为“render”的固定方法。 问题是,根据类的“渲染”方法可能需要不同数量的参数。不幸的是,“渲染”方法不能改变接受可变参数,所以我想知道如果我仍然可以作为一个数组传递参数?将任意参数数组传递给通过反射调用的方法
这产生了:
这里: “java.lang.IllegalArgumentException异常的参数错号” 的代码:
def perform(strClazz: String, pTypes: Array[Class[_]], params: Array[Object]) = {
val clazz = MyClassLoader.loadClass(strClazz)
val render = clazz.getDeclaredMethod("render", pTypes: _*)
// params: java.lang.IllegalArgumentException: wrong number of arguments
render.invoke(clazz, params)
}
而且我通过调用它:
perform("MyClass",Array[Class[_]](classOf[String], classOf[String]),Array[Any]("first", "second"))
被调用的方法需要两个字符串作为参数,所以下面的工作:
render.invoke(clazz, "first", "second")
然后是不可能传递数组吗?
params.asInstanceOf [Array [Object]]:_ *做的伎俩 – recalcitrant 2012-03-23 09:09:35