2016-09-08 4 views
4

Я пытаюсь создать экземпляр класса случай Кафка Scala от Java кода, и имеет следующую подпись:Как преобразовать Java Collection/List в Scala seq?

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, и я не могу найти ничего, что бы соответствовало этому случаю.

Как создать Scala seq от нормального java.util.List или даже java.util.Collection? Или я подхожу к этому неправильно?

+1

Как насчет 'toList' или любых других подтипов' Seq'? – puhlen

ответ

5

Используйте scala.collection.JavaConversions.asScalaBuffer, который преобразует список Java в буфер Scala, метод toList может быть использован для преобразования в неизменяемый seq.

Альтернатива, вы можете использовать CyclicIterator.

+0

Спасибо! Вызов '.asScalaBuffer(). ToSeq' сделал трюк для меня. – mjuarez