Исходя из описания вашей проблемы, я предполагаю, что у вас есть один метод, который принимает переменное число целых чисел - назовем его fun foo(vararg n: Int)
.
Если это так, то генерируемый байт-код являетсяследующее:
public final static varargs foo([I)V
Это означает, что метод принимает массив int
, который является IntArray
в мире Kotlin.
Для вызова этого метода с IntArray
вам нужно сделать:
fun foo(vararg n: Int) {
n.forEach(::println) // do something with n
}
fun main() {
val numbers = intArrayOf(1, 2, 3, 4)
foo(*numbers) // prints 1; 2; 3; 4
}
В этом фрагменте кода *
является оператором распространения и кратко описан здесь .
Также обратите внимание, что оператор распространения может применяться только к массивам, поэтому если у вас есть список Int
, вам нужно сначала преобразовать его в IntArray
, а затем применить оператор распространения, например:
fun foo(vararg n: Int) {
n.forEach(::println) // do something with n
}
fun main() {
val numbers = listOf(1, 2, 3, 4)
foo(*numbers.toIntArray()) // prints 1; 2; 3; 4
}
РЕДАКТИРОВАТЬ
После обновления вашего вопроса вы можете вызвать этот метод из своего кода Kotlin следующим образом:
val builder = ... // obtain a Builder instance
val args = intArrayOf(1, 2, 4, 10)
builder.setBarcodeFormats(1, *args) // or any other meaningful value