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

How to convert a Java Collection/List to a Scala seq?

我正在尝试从 Java 代码实例化 Kafka Scala 案例 class,它具有以下签名:

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?还是我处理不当?

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

或者,您也可以使用 CyclicIterator