2013-06-14 4 views
11

У меня есть существующий метод Java, как это:Как передать Scala Seq в Java переменной длины

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

и мне нужно, чтобы вызвать его из Scala с этим:

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

MyJavaClass.javaFunc("hello", idList) 

, но в конечном итоге вызывая метод toString для параметра idList. Я попытался следующие без толку:

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

, который вызывает ошибку компиляции:

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

Как я могу передать аргумент?

+0

Это должно нормально работать, какую ошибку вы получаете? – drexin

+0

Это звучит скорее как ошибка компилятора, которая меня немного смущает. Есть ли у этого класса другие конструкторы? – drexin

+0

Невозможно воспроизвести его. КТО, какую версию Scala вы используете? – Beryllium

ответ

2

Это сделал трюк:

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

У вас есть теперь список java. Итак, как вы собираетесь передать его в параметр как varargs java? –

Смежные вопросы