2013-04-23 5 views
76

У меня есть этот метод Scala с ошибкой ниже. Невозможно преобразовать в список Scala.Как преобразовать java.util.List в список Scala

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

тип несоответствие; найдено: java.util.List[com.aitrich.learnware.model.domain.entity.Question] требуется: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]

+2

Люди смотрят на этот вопрос может найти этот другой вопрос интереса: https://stackoverflow.com/questions/8301947/что-это-разностной-между-javaconverters-и-javaconversions-в- – Amndeep7

ответ

46
import scala.collection.JavaConversions._ 

будет делать неявное преобразование для вас; например:

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

Вы можете просто преобразовать список с помощью в Scala JavaConverters:

import scala.collection.JavaConverters._ 

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

Scala Это кажется работает .. защиту findAllStudentTest(): Список [StudentTest] = { список вар = studentTestDao.getAllStudentTests() вар SLIST = list.asScala.toList slist } – boycod3

+3

Постарайтесь придерживаться 'val' вместо 'var's ... – fynn

+9

a java.util.List .asScala возвращается как буфер для меня странно. – phillro

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

Почему' var's? Кроме того, кажется, что последние две строки могут быть объединены в одну строку 'list.asScala.toList' – redent84

+0

, первый список var получит список использования java , а второй слайст преобразует список использования java в список scala. – boycod3

+3

Я имею в виду, почему 'var' вместо' val', если вы не изменяете переменную – redent84

1

Импорт JavaConverters, ответ @fynn отсутствовал toList

import scala.collection.JavaConverters._ 

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