2011-01-07 20 views
7

Tôi phải gọi một số mã thư viện Java trả về một java.util.List không được định dạng và tôi dường như không chuyển đổi nó thành danh sách Scala 2.8 mà không trình biên dịch borking với các lỗi sau:Làm thế nào để chuyển đổi một java.util.List chưa được phân loại thành một Scala 2.8 Buffer

[INFO] found : java.util.List[?0] where type ?0 
[INFO] required: java.util.List[AnyRef] 
[INFO]  val modules: Buffer[AnyRef] = asScalaBuffer(feedEntry.getModules) 

tôi đã thử cả hai bình thường

import scala.collection.JavaConversions._ 

val modules: Buffer[AnyRef] = feedEntry.getModules 

là rõ ràng

val modules: Buffer[AnyRef] = asScalaBuffer(feedEntry.getModules) 

Tôi biết loại của các mục trong danh sách và tôi đã thử thiết lập đó như là loại Buffer nhưng tôi tiếp tục nhận được cùng một lỗi.

Tôi đã xem xét xung quanh nhưng tất cả tài liệu giả định danh sách Java sẽ được nhập. Làm cách nào để chuyển đổi danh sách không được nhập?

Trả lời

6

Tôi nghĩ bạn sẽ chỉ cần truyền đến đúng loại.

val modules: Buffer[AnyRef] = 
    feedEntry.getModules.asInstanceOf[java.util.List[AnyRef]] 

Scala có thể lấy từ đó và áp dụng chuyển đổi ẩn từ JavaConversions để bọc nó thành bộ sưu tập Scala.

+0

Cảm ơn, điều đó thực sự đã thực hiện thủ thuật –

+2

Và truyền tới loại mục thực tế trong danh sách cũng hoạt động mà không có sự cố. –

+0

@Age, đúng vậy. Tôi chỉ giả định rằng vì bạn đã cố gắng để đúc để 'AnyRef', đó là những gì bạn thực sự muốn cuối cùng. (Ví dụ, nếu bạn đang làm việc với JDOM.) –

Các vấn đề liên quan