如何将 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
不兼容。但是,JavaConversions
和JavaConverters
中的各种转换方法我都试过了,没有找到适合这种情况的方法。
如何从普通 java.util.List
甚至 java.util.Collection
创建 Scala seq
?还是我处理不当?
使用scala.collection.JavaConversions.asScalaBuffer
将Java列表转换为Scala缓冲区,其中toList方法可用于转换为不可变seq。
或者,您也可以使用 CyclicIterator
。
我正在尝试从 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
不兼容。但是,JavaConversions
和JavaConverters
中的各种转换方法我都试过了,没有找到适合这种情况的方法。
如何从普通 java.util.List
甚至 java.util.Collection
创建 Scala seq
?还是我处理不当?
使用scala.collection.JavaConversions.asScalaBuffer
将Java列表转换为Scala缓冲区,其中toList方法可用于转换为不可变seq。
或者,您也可以使用 CyclicIterator
。