2013-04-23 7 views
76

Mam tę metodę Scala z poniżej błędu. Nie można przekonwertować na listę Scala.Jak przekonwertować java.util.List na listę Scala

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

niedopasowanie typu; znaleziono: java.util.List[com.aitrich.learnware.model.domain.entity.Question] wymagane: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]

+2

Ludzie patrząc na to pytanie można znaleźć tę drugą kwestię zainteresowania: https://stackoverflow.com/questions/8301947/co-to-the-różnica pomiędzy-javaconverters-and-javaconversions-in-scala – Amndeep7

Odpowiedz

46
import scala.collection.JavaConversions._ 

zrobi niejawna konwersja dla ciebie; np:

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

Można łatwo przekonwertować Lista użyciu Scala JavaConverters:

import scala.collection.JavaConverters._ 

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

wydaje pracy .. def findAllStudentTest(): Lista [StudentTest] = { lista var = studentTestDao.getAllStudentTests() var slist = list.asScala.toList slist } – boycod3

+3

Staraj się trzymać 'val's zamiast' var's ... – fynn

+9

a java.util.List .asScala wraca jako bufor dla mnie dziwnie. – phillro

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

Dlaczego' var's? Wydaje się również, że dwie ostatnie linie można połączyć w jedną linię 'list.asScala.toList' – redent84

+0

pierwsza lista var otrzyma listę zastosowań java , a druga lista s będzie konwertować listę użytkowników java na listę scala. – boycod3

+3

Mam na myśli, dlaczego 'var' zamiast' val', jeśli nie modyfikujesz zmiennej – redent84

1

importu JavaConverters, odpowiedź @fynn brakowało toList

import scala.collection.JavaConverters._ 

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