Comment convertir Scala scala.List
en Java java.util.List
?
java
scala
scala-java-interop
Alex Baranosky
la source
la source
Réponses:
La liste Scala et la liste Java sont deux bêtes différentes, car la première est immuable et la seconde est mutable. Donc, pour passer de l'un à l'autre, vous devez d'abord convertir la liste Scala en une collection mutable.
Sur Scala 2.7:
À partir de Scala 2.8:
Cependant,
asList
dans cet exemple, il n'est pas nécessaire si le type attendu est un JavaList
, car la conversion est implicite, comme le montre la dernière ligne.la source
scala.collection.JavaConverters
partir de 2.12Je ne sais pas pourquoi cela n'a pas été mentionné auparavant, mais je pense que le moyen le plus intuitif est d'appeler la
asJava
méthode décoratrice de JavaConverters directement sur la liste Scala:la source
Pour résumer les réponses précédentes
En supposant que nous avons les éléments suivants
List
:Si tu veux etre explicite et dire exactement ce que vous voulez convertir:
Si vous ne voulez pas co-contrôler les conversions et laissez le compilateur faire un travail implicite pour vous:
C'est à vous de décider comment vous souhaitez contrôler votre code.
la source
En commençant
Scala 2.13
, le packagescala.jdk.CollectionConverters
fournitasJava
via un souteneurSeq
et remplace les packagesscala.collection.JavaConverters/JavaConversions
:la source
Jolies questions anciennes, je vais y répondre, mais la plupart des suggestions sont obsolètes.
la source
object JavaConversions in package collection is deprecated (since 2.12.0): use JavaConverters
Mettre à jour
avec scala 2.9.2:
résultat
la source
Pour les appels simples, le faire à la main peut être la solution la plus simple:
Je n'ai pas mesuré les performances.
la source
Le simple fait de faire comme proposé ci-dessus produit une liste immuable même du côté Java. La seule solution de travail que j'ai trouvée est la suivante:
la source
Depuis Scala 2.12.0 JavaConversions est obsolète.
La solution la plus simple pour moi était donc:
la source
import scala.collection.JavaConverters._
pour 2.12.4