2013-04-23 13 views
76

Ho questo metodo Scala con l'errore seguente. Impossibile convertire in una lista Scala.Come convertire un java.util.List in un elenco Scala

def findAllQuestion():List[Question]={ 
    questionDao.getAllQuestions() 
} 

tipo di disallineamento; trovati: java.util.List[com.aitrich.learnware.model.domain.entity.Question] richiesto: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]

+2

Folks guardando a questa domanda potrebbero trovare questa altra questione di interesse: https://stackoverflow.com/questions/8301947/what-is-the-difference-between-javaconverters-and-javaconversions-in-scala – Amndeep7

risposta

46
import scala.collection.JavaConversions._ 

farà conversione implicita per voi; ad esempio:

var list = new java.util.ArrayList[Int](1,2,3) 
list.foreach{println} 
83

si può semplicemente convertire l'elenco utilizzando Scala JavaConverters:

import scala.collection.JavaConverters._ 

def findAllQuestion():List[Question] = { 
    questionDao.getAllQuestions().asScala 
} 
+2

Questo sembra funzionare .. def findAllStudentTest(): List [StudentTest] = { var list = studentTestDao.getAllStudentTests() var slist = list.asScala.toList slist } – boycod3

+3

Provare ad attenersi a 'val's invece di' var's ... – fynn

+9

un java.util.List .asScala ritorna come un buffer per me stranamente. – phillro

19
def findAllStudentTest(): List[StudentTest] = { 
    studentTestDao.getAllStudentTests().asScala.toList 
} 
+2

Perché il' var's? Inoltre, sembra che le ultime due righe potrebbero essere combinate con una sola riga 'list.asScala.toList' – redent84

+0

la prima lista var otterrà la lista java util e la seconda opzione convertirà la lista java util nella lista scala. – boycod3

+3

Voglio dire, perché 'var' invece di' val' se non stai modificando la variabile – redent84

1

Import JavaConverters, la risposta di @fynn mancava toList

import scala.collection.JavaConverters._ 

def findAllQuestion():List[Question] = { 
    //   java.util.List -> Buffer -> List 
    questionDao.getAllQuestions().asScala.toList 
}