Conversion de scala.collection.Seq pour java.util.Liste en code Java
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, donc je ne peux pas utiliser le asJavaCollection
méthode scala.collection.JavaConversions._
Toutes les idées de comment puis-je y parvenir?
Utilisation De Scala 2.9.3
4 réponses
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 pas utiliser les implicits de JavaConversions
puisqu'ils sont dépréciés et seront bientôt supprimés. Au lieu de cela, pour convertir Seq
en java List
utiliser convert
paquet comme ça (bien que ça n'est pas très agréable):
import scala.collection.convert.WrapAsJava$;
public class Test {
java.util.List<String> convert(scala.collection.Seq<String> seq) {
return WrapAsJava$.MODULE$.seqAsJavaList(seq);
}
}
public static <T> java.util.List<T> convert(scala.collection.Seq<T> seq) {
return scala.collection.JavaConverters.seqAsJavaList(seq);
}
Toutes les autres méthodes @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")
(Dans le cas où vous souhaitez faire cette conversion en Scala code)
Vous pouvez utiliser JavaConverters pour rendre cela vraiment facile.
import collection.JavaConverters._
val s: Seq[String] = ...
val list: java.util.List<String> = s.asJava