从 scala 列表中获取 java 对象数组
get java object array from scala list
我正在使用 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 数组?
使用 .toArray 的想法是一个很好的尝试。但是它给出了Array[String](=String[] in Java),这与Array[Object] (= Object[]) for Java。另一方面,如果您使用
List("sf", "f").toArray[Object]
一切正常。
我正在使用 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 数组?
使用 .toArray 的想法是一个很好的尝试。但是它给出了Array[String](=String[] in Java),这与Array[Object] (= Object[]) for Java。另一方面,如果您使用
List("sf", "f").toArray[Object]
一切正常。