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);
}