¿Cómo puedo convertir mi Kotlin Array
a un Java varargs String[]
?
val angularRoutings =
arrayOf<String>("/language", "/home")
// this doesn't work
web.ignoring().antMatchers(angularRoutings)
¿Cómo puedo convertir mi Kotlin Array
a un Java varargs String[]
?
val angularRoutings =
arrayOf<String>("/language", "/home")
// this doesn't work
web.ignoring().antMatchers(angularRoutings)
Respuestas:
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
vararg
función-, podemos pasar argumentos uno por uno, por ejemploasList(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()
vararg
espera elementos individuales, y *array
es la forma de Kotlin de decir "tratar esta matriz como elementos individuales para ese propósito". Dentro de la función vararg
-el vararg
parámetro será una matriz de todos modos. Para convertir elementos individuales en una matriz, puede usar arrayOf(...)
, pero no es necesario en este caso.
vararg
?