我正在使用apache反射,有一个java方法的签名是
public static Object invokeStaticMethod(Class cls, String methodName,
Object[] args)我的代码是
object Tobject {
def echo(name: String) =
println("echo 1")
def echo2(name: String, arg: String) =
println ("echo 2")
}
class ApacheReflection extends FunSuite {
test("apache reflection") {
val factory = ClassUtils.getClass("Tobject")
MethodUtils.invokeStaticMethod(factory,"echo2", List("sf", "f").asJava)
}
}我收到了异常消息
No such accessible method: echo2() on class: Tobject
java.lang.NoSuchMethodException: No such accessible method: echo2() on class: Tobject似乎asJava可以将scala列表转换为java列表,而不是数组,那么如何从scala列表中获得java数组呢?
发布于 2015-07-20 15:13:36
使用.toArray的想法是一个很好的尝试。但是它给出了ArrayString (= String[]在Java中),这与ArrayObject (= Object[])对于Java是不一样的。另一方面,如果你用
List("sf", "f").toArray[Object]一切都正常。
https://stackoverflow.com/questions/31500308
复制相似问题