2013-06-14 28 views
11

Tôi có một phương pháp Java hiện như thế này:Làm thế nào để vượt qua Scala Seq để một Java varargs

public static MyJavaClass javaFunc(String name, long... values) { 
    ... 
} 

và tôi cần phải gọi nó từ Scala với điều này:

val idList: Seq[Long] = Seq(1L, 2L, 3L) 

MyJavaClass.javaFunc("hello", idList) 

nhưng nó kết thúc gọi phương thức toString trên tham số idList. Tôi đã thử những điều sau đây để avail không có:

MyJavaClass.javaFunc("hello", idList:_*) 

gây lỗi biên dịch:

no `: _*' annotation allowed here (such annotations are only allowed in arguments to *-parameters) 

Làm thế nào tôi có thể vượt qua đối số?

+0

này thường phải làm việc, những gì lỗi nào bạn nhận được? – drexin

+0

Điều này nghe có vẻ giống như một lỗi biên dịch, điều đó làm tôi bối rối một chút. Lớp này có các nhà xây dựng khác không? – drexin

+0

Không thể tái tạo nó. BTW mà bạn đang sử dụng phiên bản Scala? – Beryllium

Trả lời

2

này đã làm các trick:

import scala.collection.JavaConverters._ 
val javaList = idList.asJava 
+5

Bạn đã có một danh sách java ngay bây giờ. Vì vậy, làm thế nào bạn sẽ vượt qua nó vào tham số như varargs của java? –

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