从scala列表中获取java对象数组

时间:2015-07-19 10:43:40

标签: scala scala-java-interop

我正在使用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数组呢?

1 个答案:

答案 0 :(得分:2)

使用的想法.toArray是一个很好的尝试。但它在Java中提供 Array [String] (= String [] ),这与 Array [Object] (= < em> Object [] )用于Java。另一方面,如果你使用

List("sf", "f").toArray[Object]
一切正常。