java scala type-conversion scala-java-interop

Convertir de scala.collection.Seq<String> a java.util.List<String> en código Java



type-conversion scala-java-interop (4)

(En caso de que quiera hacer esta conversión en código Scala)

Puedes usar JavaConverters para que esto sea realmente fácil.

import collection.JavaConverters._ val s: Seq[String] = ... val list: java.util.List<String> = s.asJava

Estoy llamando a un método Scala, desde Java. Y necesito hacer la conversión de Seq a List.

No puedo modificar la firma del método Scala, así que no puedo usar el método scala.collection.JavaConversions._ de scala.collection.JavaConversions._

¿Alguna idea de cómo puedo lograr esto?

Utilizando Scala 2.9.3


Desde 2.12 esta es la forma recomendada:

public static <T> java.util.List<T> convert(scala.collection.Seq<T> seq) { return scala.collection.JavaConverters.seqAsJavaList(seq); }

Todos los demás métodos a @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")


Desde Scala 2.9, no debe usar implicits de JavaConversions ya que están en desuso y pronto serán eliminados. En cambio, para convertir Seq en java List use el paquete de convert como este (aunque no se ve muy bien):

import scala.collection.convert.WrapAsJava$; public class Test { java.util.List<String> convert(scala.collection.Seq<String> seq) { return WrapAsJava$.MODULE$.seqAsJavaList(seq); } }


Está en el camino correcto usando JavaConversions , pero el método que necesita para esta conversión en particular es seqAsJavaList :

java.util.List<String> convert(scala.collection.Seq<String> seq) { return scala.collection.JavaConversions.seqAsJavaList(seq); }