Convierta Kotlin Array a varargs Java

Respuestas:

231

Debería utilizar el operador de extensión que se ve así: *
El operador de extensión debe colocarse delante del argumento de la matriz:

antMatchers(*angularRoutings)

Para obtener más información, consulte la documentación :

Cuando llamamos a una varargfunción-, podemos pasar argumentos uno por uno, por ejemplo asList(1, 2, 3), o, si ya tenemos una matriz y queremos pasar su contenido a la función, usamos el operador de propagación (prefijo la matriz con *):

Tenga en cuenta que el operador de extensión solo se define para matrices y no se puede utilizar directamente en una lista. Cuando trabaje con una lista, use, por ejemplo, toTypedArray()para transformarla en una matriz:

 *list.toTypedArray()
s1m0nw1
fuente
¿Y cómo volver a convertir?
lacas
@Iacas ¿A qué te refieres con "convertir de nuevo"? A varargespera elementos individuales, y *arrayes la forma de Kotlin de decir "tratar esta matriz como elementos individuales para ese propósito". Dentro de la función vararg-el varargparámetro será una matriz de todos modos. Para convertir elementos individuales en una matriz, puede usar arrayOf(...), pero no es necesario en este caso.
Dario Seidl
3
Tenga en cuenta que esto tiene una penalización de muy alto rendimiento. sites.google.com/a/athaydes.com/renato-athaydes/posts/… verifique Varargs, o medium.com/@BladeCoder/…
svkaka
¿Hay alguna forma de evitar el uso del operador de propagación y pasar alguna matriz o lista a un método que acepte vararg?
Wackaloon
@DarioSeidl Quiere decir: ¿Qué pasa si tenemos varargs de cadena y deseamos pasar a una función que espera una matriz de cadenas?
desarrollador de Android