Converti Kotlin Array in Java varargs


Risposte:


231

Dovresti usare l' operatore spread che assomiglia a questo: *
L'operatore spread deve essere posizionato davanti all'argomento dell'array:

antMatchers(*angularRoutings)

Per ulteriori informazioni, vedere la documentazione :

Quando chiamiamo una funzione- vararg, possiamo passare gli argomenti uno per uno, ad esempio asList(1, 2, 3), oppure, se abbiamo già un array e vogliamo passare il suo contenuto alla funzione, usiamo l'operatore spread (anteporre l'array con *):

Si noti che l'operatore spread è definito solo per gli array e non può essere utilizzato direttamente in un elenco. Quando si ha a che fare con un elenco, utilizzare ad esempio toTypedArray()per trasformarlo in un array:

 *list.toTypedArray()

E come riconvertire?
lacas

@Iacas Cosa intendi per "riconvertirsi"? A si varargaspetta elementi individuali, ed *arrayè il modo in cui Kotlin dice "tratta questo array come elementi individuali per quello scopo". All'interno della funzione varargil varargparametro sarà comunque un array. È possibile utilizzare per convertire singoli elementi in un array arrayOf(...), ma in questo caso non è necessario.
Dario Seidl

3
Notare che questo ha una penalità per prestazioni molto elevate. sites.google.com/a/athaydes.com/renato-athaydes/posts/… controlla Varargs, o medium.com/@BladeCoder/…
svkaka

C'è un modo per evitare di utilizzare l'operatore spread e passare un array o un elenco a un metodo che accetta vararg?
Wackaloon

@DarioSeidl intende: cosa succede se abbiamo vararg di string e desideriamo passare a una funzione che prevede un array di stringhe?
sviluppatore Android
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.