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

从scala列表中获取java对象数组,scala,scala-java-interop,Scala,Scala Java Interop,我正在使用ApacheReflection,有一个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

我正在使用ApacheReflection,有一个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数组呢?

使用的想法。toArray是一个很好的尝试。但是它给出了数组[String](=String[]在Java中),这与Java的数组[Object](=Object[])不同。另一方面,如果您使用

List("sf", "f").toArray[Object]

一切正常。

AFAIK,scala使用java中的数组。所以只要把list.toArray转换一下就够了,我知道。但是list.toArray不起作用。问题是invokeStaticMethod有两个重载方法。第一个参数是object,第二个参数是object[]。不管我给它什么样的论证,它只是把我的论证当作对象。