J'appelle une méthode Scala, de Java. Et je dois faire la conversion de Seq à List.
Je ne peux pas modifier la signature de la méthode Scala, je ne peux donc pas utiliser la méthode asJavaCollection
à partir de scala.collection.JavaConversions._
Des idées sur comment puis-je atteindre cet objectif?
Utiliser Scala 2.9.3
Vous êtes sur la bonne voie en utilisant JavaConversions
, mais la méthode dont vous avez besoin pour cette conversion particulière est seqAsJavaList
:
Java.util.List<String> convert(scala.collection.Seq<String> seq) {
return scala.collection.JavaConversions.seqAsJavaList(seq);
}
Depuis Scala 2.9, vous ne devriez plus utiliser les implicites de JavaConversions
car ils sont obsolètes et seront bientôt supprimés. Au lieu de cela, pour convertir Seq
en Java List
, utilisez le paquetage convert
comme ceci (même s'il n'a pas l'air très joli):
import scala.collection.convert.WrapAsJava$;
public class Test {
Java.util.List<String> convert(scala.collection.Seq<String> seq) {
return WrapAsJava$.MODULE$.seqAsJavaList(seq);
}
}
Depuis la version 2.12, c'est la méthode recommandée:
public static <T> Java.util.List<T> convert(scala.collection.Seq<T> seq) {
return scala.collection.JavaConverters.seqAsJavaList(seq);
}
Toutes les autres méthodes a @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")
(Si vous voulez faire cette conversion en code Scala)
Vous pouvez utiliser JavaConvertisseurs pour rendre cela vraiment facile.
import collection.JavaConverters._
val s: Seq[String] = ...
val list: Java.util.List<String> = s.asJava