2013-04-23 73 views
76

Tôi có phương pháp Scala này với lỗi dưới đây. Không thể chuyển đổi thành danh sách Scala.Làm thế nào để chuyển đổi một java.util.List thành một danh sách Scala

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

loại không khớp; tìm thấy: java.util.List[com.aitrich.learnware.model.domain.entity.Question] yêu cầu: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]

+2

Folks nhìn vào câu hỏi này có thể tìm thấy câu hỏi này đáng chú ý khác: https://stackoverflow.com/questions/8301947/what-is-the-different-between-javaconverters-and-javaconversions-in-scala – Amndeep7

Trả lời

46
import scala.collection.JavaConversions._ 

sẽ làm chuyển đổi ngầm cho bạn; ví dụ:

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

Bạn chỉ có thể chuyển đổi danh sách sử dụng của Scala JavaConverters:

import scala.collection.JavaConverters._ 

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

Điều này có vẻ hoạt động .. def findAllStudentTest(): List [StudentTest] = { var list = studentTestDao.getAllStudentTests() var slist = list.asScala.toList slist } – boycod3

+3

Cố gắng gắn bó với 'val' thay vì 'var' ... – fynn

+9

một java.util.List .asScala trở lại như một bộ đệm cho tôi một cách kỳ lạ. – phillro

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

Tại sao' var'? Ngoài ra, có vẻ như hai dòng cuối cùng có thể được kết hợp với một dòng duy nhất 'list.asScala.toList' – redent84

+0

danh sách var đầu tiên sẽ lấy danh sách java util và slist thứ hai sẽ chuyển đổi danh sách java util thành danh sách scala. – boycod3

+3

Ý tôi là, tại sao 'var' thay vì' val' nếu bạn không sửa đổi biến – redent84

1

nhập JavaConverters, phản ứng của @fynn đã mất tích toList

import scala.collection.JavaConverters._ 

def findAllQuestion():List[Question] = { 
    //   java.util.List -> Buffer -> List 
    questionDao.getAllQuestions().asScala.toList 
} 
Các vấn đề liên quan