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