我有一个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
实例添加到其中。如果我创建一个Item
s的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());