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

23
demandé sur Cacho Santa 2013-07-19 07:27:09

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);
}
32
répondu Chris Martin 2013-07-19 04:25:21

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);
    }
}
8
répondu 4lex1v 2014-09-18 17:47:34
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")

5
répondu berezovskyi 2017-07-18 20:36:43

(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
0
répondu rasen58 2017-08-11 00:07:54