Konwertuj tablicę Kotlin na varargs Java

Odpowiedzi:

233

Powinieneś użyć operatora spread, który wygląda następująco: *
Operator spreadu należy umieścić przed argumentem tablicowym:

antMatchers(*angularRoutings)

Więcej informacji można znaleźć w dokumentacji :

Kiedy wywołujemy vararg-funkcję, możemy przekazywać argumenty jeden po drugim, np. asList(1, 2, 3)Lub, jeśli mamy już tablicę i chcemy przekazać jej zawartość do funkcji, używamy operatora spreadu (poprzedzamy tablicę *):

Należy pamiętać, że operator spreadu jest zdefiniowany tylko dla tablic i nie można go używać bezpośrednio na liście. Kiedy mamy do czynienia z listą, użyjmy np. toTypedArray()Aby przekształcić ją w tablicę:

 *list.toTypedArray()
s1m0nw1
źródło
A jak konwertować z powrotem?
lacas
@Iacas Co masz na myśli mówiąc „Convert back”? A varargoczekuje pojedynczych elementów i *arrayjest sposobem Kotlina na powiedzenie „traktuj tę tablicę jako indywidualne elementy do tego celu”. W ramach vararg-funkcji varargparametr i tak będzie tablicą. Aby przekonwertować poszczególne elementy na tablicę, której możesz użyć arrayOf(...), ale nie potrzebujesz tego w tym przypadku.
Dario Seidl
3
Zauważ, że ma to bardzo duży spadek wydajności. sites.google.com/a/athaydes.com/renato-athaydes/posts/ ... sprawdź Varargs lub medium.com/@BladeCoder/…
svkaka
Czy jest jakiś sposób, aby uniknąć używania operatora spreadu i przekazać jakąś tablicę lub listę do metody, która akceptuje vararg?
Wackaloon
@DarioSeidl Ma na myśli: A co, jeśli mamy zmienne stringi i chcemy przekazać do funkcji, która oczekuje tablicy ciągów?
programista Androida