从Java调用可变长度参数Scala函数的语法



我有一个Scala类,它的构造函数采用可变长度的参数列表。

case class ItemChain(items: Item*)

在Scala中,它可以被称为

ItemChain(Item(), Item())

我搞不懂从Java调用它的语法。如果我做这个

new ItemChain(new Item(), new Item())

我得到一个编译器错误,说这一行与签名scala.collection.seq<Item>不匹配。

我可以直接从Java实例化Scala序列对象。

new scala.collection.Seq<Item>()

但我不知道如何随后将我的两个Item实例添加到其中。如果我创建一个Items的Java List并将其强制转换为scala.collection.Seq,我会遇到运行时错误。

这应该可以做到:

import static scala.collection.JavaConverters.asScalaBufferConverter;
import static java.util.Arrays.asList;
...
new ItemChain(asScalaBufferConverter(asList(new Item(), new Item())).asScala());

最新更新