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

标签 java scala cross-language variadic-functions

我有一个 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它的实例。如果我创建一个 Java ListItem s 并将其转换为 scala.collection.Seq我收到运行时错误。

最佳答案

这应该可以解决问题:

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

...

new ItemChain(asScalaBufferConverter(asList(new Item(), new Item())).asScala());

关于java - 从 Java 调用可变长度参数 Scala 函数的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25732534/

相关文章:

java - 通过套接字发送对象,但不同语言的客户端,如何使对象序列化?

javascript - 在客户端机器上安装字体

java - 如何在 play 2.2.0 Java 中实现 CORS 过滤器?

java - vector 缩放问题

scala - 为什么 scala 在此模运算中返回超出范围的值?

scala - Scala 中的高级类型是什么?

.net - protobuf-net 或 Protocol Buffer 服务,从 c# 到 python 和其他语言

java - 获取引号之间的字符串

Java并发: should I synchronize all List and Maps?

scala - 为什么存在 FloatAsIfIntegral?