2013-06-14 19 views
11

ho un metodo Java esistente in questo modo:Come passare Scala Seq ad un Java varargs

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

e ho bisogno di chiamarlo da Scala con questo:

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

MyJavaClass.javaFunc("hello", idList) 

ma finisce per invocazione del metodo toString sul parametro idList. Ho provato la seguente inutilmente:

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

che causa errore di compilazione:

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

Come posso passare l'argomento?

+0

Questo dovrebbe funzionare normalmente, quale errore si ottiene? – drexin

+0

Sembra più un errore del compilatore, che mi confonde un po '. Questa classe ha altri costruttori? – drexin

+0

Impossibile riprodurlo neanche. A proposito di quale versione di Scala stai usando? – Beryllium

risposta

2

Questo ha fatto il trucco:

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

Hai una lista di Java ora. Quindi, come lo passerai in parametro come varargs di java? –

Problemi correlati