如何将Java Collection / List转换为Scala seq?

时间:2016-09-08 20:49:46

标签: java scala scala-java-interop

我试图从Java代码中实例化Kafka Scala案例类,它具有以下签名:

case class OffsetFetchRequest(groupId: String,
                          requestInfo: Seq[TopicAndPartition],
                          versionId: Short = OffsetFetchRequest.CurrentVersion,
                          correlationId: Int = 0,
                          clientId: String = OffsetFetchRequest.DefaultClientId)

我能够发送除Seq[TopicAndPartition]之外的所有请求参数。

在Java方面,我有以下代码:

OffsetFetchRequest offsetFetchRequest = new OffsetFetchRequest(
                                                "someGroup", 
                                                topicAndPartitions, 
                                                (short)1, 
                                                1, 
                                                "clientId");

正如预期的那样,java.util.List与Scala Seq不兼容。不过,我已经在JavaConversionsJavaConverters中尝试了所有类型的转换方法,但我无法找到适合此情况的任何内容。

如何从普通seq甚至java.util.List创建Scala java.util.Collection?或者我接近这个错误?

1 个答案:

答案 0 :(得分:5)

使用scala.collection.JavaConversions.asScalaBuffer将Java列表转换为Scala缓冲区,其中toList方法可用于转换为不可变seq。

另外,您也可以使用CyclicIterator