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()

¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.