Convertir Kotlin Array en Varargs Java

Réponses:

233

Vous devez utiliser l' opérateur de diffusion qui ressemble à ceci: *
L'opérateur de diffusion doit être placé devant l'argument de tableau:

antMatchers(*angularRoutings)

Pour plus d'informations, consultez la documentation :

Lorsque nous appelons une fonction vararg-fonction, nous pouvons passer des arguments un par un, par exemple asList(1, 2, 3), ou, si nous avons déjà un tableau et que nous voulons passer son contenu à la fonction, nous utilisons l'opérateur spread (préfixe le tableau avec *):

Veuillez noter que l'opérateur de diffusion n'est défini que pour les tableaux et ne peut pas être utilisé directement sur une liste. Lorsque vous traitez une liste, utilisez par exemple toTypedArray()pour la transformer en tableau:

 *list.toTypedArray()
s1m0nw1
la source
Et comment reconvertir?
lacas
@Iacas Qu'entendez-vous par «reconvertir»? A varargattend des éléments individuels, et *arrayc'est la manière Kotlin de dire "traiter ce tableau comme des éléments individuels à cette fin". Dans la fonction vararg-fonction, le varargparamètre sera de toute façon un tableau. Pour convertir des éléments individuels en un tableau, vous pouvez utiliser arrayOf(...), mais vous n'en avez pas besoin dans ce cas.
Dario Seidl
3
Notez que cela a une pénalité de très haute performance. sites.google.com/a/athaydes.com/renato-athaydes/posts/… check Varargs, ou medium.com/@BladeCoder/…
svkaka
Existe-t-il un moyen d'éviter d'utiliser l'opérateur de propagation et de passer un tableau ou une liste à une méthode qui accepte vararg?
Wackaloon
@DarioSeidl Il veut dire: que se passe-t-il si nous avons des varargs de chaîne et que nous souhaitons passer à une fonction qui attend un tableau de chaînes?
développeur android