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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.