2013-06-14 16 views
11

mam istniejąca metoda Java tak:Jak przekazać Scala sekw do Java varargs

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

i muszę zadzwonić z Scala z tym:

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

MyJavaClass.javaFunc("hello", idList) 

ale kończy się wywołanie metody toString w parametrze idList. Próbowałem następujące bezskutecznie:

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

co powoduje błąd kompilacji:

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

Jak mogę przekazać argument?

+0

To powinno normalnie pracować, co błędów nie można dostać? – drexin

+0

To brzmi bardziej jak błąd kompilatora, który trochę mnie myli. Czy ta klasa ma innych konstruktorów? – drexin

+0

Nie można tego odtworzyć. BTW jakiej wersji Scala używasz? – Beryllium

Odpowiedz

2

To załatwiło sprawę:

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

Masz a java List teraz. Tak, jak zamierzasz przekazać go do parametru jako varargs java? –

Powiązane problemy