it-swarm.com.de

Konvertieren Sie in Java-Code von scala.collection.Seq <String> in Java.util.List <String>

Ich rufe eine Scala-Methode von Java an. Und ich muss die Konvertierung von Seq in List vornehmen.

Ich kann die Signatur der Scala-Methode nicht ändern, daher kann ich die asJavaCollection-Methode von scala.collection.JavaConversions._ nicht verwenden.

Irgendwelche Ideen, wie ich das erreichen kann?

Verwenden von Scala 2.9.3

27
Cacho Santa

Sie sind mit JavaConversions auf dem richtigen Weg, aber für diese Konvertierung benötigen Sie seqAsJavaList:

Java.util.List<String> convert(scala.collection.Seq<String> seq) {
    return scala.collection.JavaConversions.seqAsJavaList(seq);
}
37
Chris Martin

Seit Scala 2.9 sollten Sie keine Implizite aus JavaConversions verwenden, da diese veraltet sind und bald entfernt werden. Um Seq in Java List zu konvertieren, verwenden Sie convert-Paket wie folgt (obwohl es nicht sehr schön aussieht)

import scala.collection.convert.WrapAsJava$;

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

Seit 2.12 ist dies der empfohlene Weg:

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

Alle anderen Methoden a @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")

5
berezovskyi

(Falls Sie diese Konvertierung in Scala-Code durchführen möchten)

Sie können JavaConverter verwenden, um dies ganz einfach zu machen.

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