如何将Scala Seq传递给Java varargs

Out*_*ace 11 java scala variadic-functions

我有一个像这样的现有Java方法:

public static MyJavaClass javaFunc(String name, long... values) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我需要用Scala来调用它:

val idList: Seq[Long] = Seq(1L, 2L, 3L)

MyJavaClass.javaFunc("hello", idList)
Run Code Online (Sandbox Code Playgroud)

但它最终会在idList参数上调用toString方法.我试过以下无济于事:

MyJavaClass.javaFunc("hello", idList:_*)
Run Code Online (Sandbox Code Playgroud)

这会导致编译错误:

no `: _*' annotation allowed here (such annotations are only allowed in arguments to *-parameters)
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过论证?

Out*_*ace -1

这做到了这一点:

import scala.collection.JavaConverters._
val javaList = idList.asJava
Run Code Online (Sandbox Code Playgroud)

  • 现在您已经有了一个 java 列表。那么,如何将它作为 java 的 varargs 传递给参数呢? (8认同)