3

我有一个 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实例添加到其中。如果我创建一个 s 的 JavaList并将Item其转换为scala.collection.Seq我得到一个运行时错误。

4

1 回答 1

4

这应该可以解决问题:

import static scala.collection.JavaConverters.asScalaBufferConverter;
import static java.util.Arrays.asList;

...

new ItemChain(asScalaBufferConverter(asList(new Item(), new Item())).asScala());
于 2014-09-08T21:07:06.943 回答