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

mju*_*rez 4 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)
Run Code Online (Sandbox Code Playgroud)

我能够发送所有请求的参数,除了Seq[TopicAndPartition].

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

OffsetFetchRequest offsetFetchRequest = new OffsetFetchRequest(
                                                "someGroup", 
                                                topicAndPartitions, 
                                                (short)1, 
                                                1, 
                                                "clientId");
Run Code Online (Sandbox Code Playgroud)

正如所料,a java.util.List与Scala不兼容Seq.不过,我已经尝试了所有类型的转换方法JavaConversionsJavaConverters,我找不到任何适合这种情况.

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

Ris*_*shi 5

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

另外,你也可以使用CyclicIterator.