2013-07-19 12 views

Odpowiedz

26

Jesteś na właściwej drodze, stosując JavaConversions, ale metoda jest potrzebne do tego konkretnego konwersji jest seqAsJavaList:

java.util.List<String> convert(scala.collection.Seq<String> seq) { 
    return scala.collection.JavaConversions.seqAsJavaList(seq); 
} 
+0

Nie jestem w stanie ** zaimportować scala.collection.JavaConversions; ** w Eclipse. jego pokazuje Błąd tutaj –

+0

Nie jestem pewien, czy to jest nowe czy nie, ale musiałem zrobić 'seqAsJavaList (seq) .asJava', aby uzyskać rzeczywistą listę' List ' – grinch

8

Od Scala 2.9, nie należy używaj implicite z JavaConversions, ponieważ są one przestarzałe i wkrótce zostaną usunięte. Zamiast konwertować Seq w java List użycie convert pakiet tak (chociaż nie wygląda bardzo ładne):

import scala.collection.convert.WrapAsJava$; 

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

Może to być dobry pomysł dla scala, aby zapewnić bardziej przyjazny dla java zestaw metod frontend dla tego rodzaju konwersji. –

5

Od 2.12 jest to zalecany sposób:

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

Wszystkie inne metody na @deprecated("use JavaConverters or consider ToJavaImplicits", since="2.12.0")

0

(W przypadku, gdy chcesz zrobić konwersję w kodzie Scala)

Możesz użyć JavaConverters, aby było to naprawdę łatwe.

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

Pytanie dotyczy konwersji w kodzie Java, a nie w kodzie Scala. –

+0

Ach, mój błąd, wiedziałem, że to dziwne, że nikt jeszcze nie zasugerował tego rozwiązania - teraz ma sens. – rasen58

Powiązane problemy