2013-04-23 6 views
76

Ich habe diese Scala Methode mit folgenden Fehlern. Kann nicht in eine Scala-Liste umgewandelt werden.Wie ein java.util.List zu einer Scala Liste konvertieren

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

Typ Mismatch; gefunden: java.util.List[com.aitrich.learnware.model.domain.entity.Question] erforderlich: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]

+2

Folks auf diese Frage suchen könnte diese andere Frage von Interesse: https://stackoverflow.com/questions/8301947/was-ist-der-Differenz-zwischen-javaconverters-and-javaconversions-in-scala – Amndeep7

Antwort

46
import scala.collection.JavaConversions._ 

wird für Sie implizite Konvertierung tun; zB:

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

Sie einfach die Liste mit JavaConverters Scala umwandeln kann:

import scala.collection.JavaConverters._ 

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

Dies scheint zu funktionieren .. def findAllStudentTest(): Liste [StudentTest] = { var list = studentTestDao.getAllStudentTests() var slist = list.asScala.toList slist } – boycod3

+3

Versuchen Sie, an 'val' anstelle von 'var's zu hängen ... – fynn

+9

eine java.util.List .asScala kommt als Puffer für mich seltsam zurück. – phillro

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

Warum die' var's? Es scheint auch, dass die letzten beiden Zeilen zu einer einzigen Zeile 'list.asScala.toList' kombiniert werden könnten. – redent84

+0

die erste var-Liste wird java util list erhalten und der zweite slist wird java util-Liste in scala-Liste konvertieren. – boycod3

+3

Ich meine, warum 'statt' val' var', wenn Sie nicht die Variable – redent84

1

Import JavaConverters, die Antwort von @fynn fehlte toList

import scala.collection.JavaConverters._ 

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