Il est tout à fait logique de retour java.util.List[T]
qui est une interface Java et peut avoir ArrayList[T]
ou comme LinkedList[T]
la mise en oeuvre.
scala> val scalaList = List(1,2,3)
scalaList: List[Int] = List(1, 2, 3)
scala> import scala.collection.JavaConverters._
import scala.collection.JavaConverters._
scala> scalaList.asJava
res22: java.util.List[Int] = [1, 2, 3]
À mon avis, il doit être converti en ArrayList[T]
ou LinkedList[T]
tout ce que vous voulez par vous-même.
Une façon que je pouvais penser est
scala> new java.util.ArrayList[Int](scalaList.asJava)
res27: java.util.ArrayList[Int] = [1, 2, 3]
ou
scala> new java.util.LinkedList[Int](scalaList.asJava)
res28: java.util.LinkedList[Int] = [1, 2, 3]
meilleure version de ce serait
scala> def toArrayList[T](input: List[T]): java.util.ArrayList[T] = new java.util.ArrayList[T](input.asJava)
toArrayList: [T](input: List[T])java.util.ArrayList[T]
scala> toArrayList(List(1000, 2000, 3000))
res33: java.util.ArrayList[Int] = [1000, 2000, 3000]
Et la meilleure version serait, écrire implic elle méthode
class AsArrayList[T](input: List[T]) {
def asArrayList : java.util.ArrayList[T] = new java.util.ArrayList[T](input.asJava)
}
implicit def asArrayList[T](input: List[T]) = new AsArrayList[T](input)
List(1000, 2000, 3000).asArrayList
'' ArrayList est mise en œuvre de '' Liste en Java. Il est logique de retourner 'Liste '. –
prayagupd
La liste est le type d'interface qui représente n'importe quelle liste, et en tant que tel, c'est ce que la plupart des gens prennent comme paramètre au lieu d'une instance spécifique. Prenant l'instance spécifique sans commentaire spécifique, et en particulier un comme ArrayList, devrait toujours au moins être documenté avec une bonne raison. –
midor