我试图从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
不兼容。不过,我已经在JavaConversions
和JavaConverters
中尝试了所有类型的转换方法,但我无法找到适合此情况的任何内容。
如何从普通seq
甚至java.util.List
创建Scala java.util.Collection
?或者我接近这个错误?
答案 0 :(得分:5)
使用scala.collection.JavaConversions.asScalaBuffer
将Java列表转换为Scala缓冲区,其中toList方法可用于转换为不可变seq。
另外,您也可以使用CyclicIterator
。