如何将Java集合/列表转换为Scala序列?

3

我正在尝试从Java代码实例化一个Kafka Scala case类,其签名如下:

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中,并且我找不到适用于这种情况的任何东西。
我该如何从普通的java.util.List甚至是java.util.Collection创建一个Scala seq?或者我是否错误地接近了这个问题?

1
toList 或者其他 Seq 子类型转换器怎么样? - puhlen
1个回答

4
使用scala.collection.JavaConversions.asScalaBuffer将Java列表转换为Scala缓冲区,其中的toList方法可用于转换为不可变序列。
另外,您也可以使用CyclicIterator

谢谢!对我来说,调用.asScalaBuffer().toSeq就解决了问题。 - mjuarez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接