Konvertieren Sie das Kotlin-Array in Java-Variablen


Antworten:


228

Sie sollten den " Spread-Operator " verwenden, der folgendermaßen aussieht: *
Dem Spread-Operator muss das Array-Argument vorangestellt werden:

antMatchers(*angularRoutings)

Weitere Informationen finden Sie in der Dokumentation :

Wenn wir eine vararg-Funktion aufrufen , können wir Argumente einzeln übergeben, z. B. asList(1, 2, 3)wenn wir bereits ein Array haben und dessen Inhalt an die Funktion übergeben möchten, verwenden wir den Spread-Operator (stellen Sie dem Array das Präfix *):

Bitte beachten Sie, dass der Spread-Operator nur für Arrays definiert ist und nicht direkt in einer Liste verwendet werden kann. Verwenden Sie beim Umgang mit einer Liste zunächst Folgendes toTypedArray():

 *list.toTypedArray()

Und wie konvertiere ich zurück?
Lacas

@Iacas Was meinst du mit "zurück konvertieren"? A varargerwartet einzelne Elemente und *arrayist die Kotlin-Methode, um zu sagen, "behandeln Sie dieses Array als einzelne Elemente für diesen Zweck". Innerhalb der vararg-Funktion ist der varargParameter sowieso ein Array. Um einzelne Elemente in ein Array zu konvertieren, können Sie es verwenden arrayOf(...), aber das brauchen Sie in diesem Fall nicht.
Dario Seidl

3
Beachten Sie, dass dies eine sehr hohe Leistungsstrafe hat. sites.google.com/a/athaydes.com/renato-athaydes/posts/… überprüfen Sie Varargs oder medium.com/@BladeCoder/…
svkaka

Gibt es eine Möglichkeit, die Verwendung des Spread-Operators zu vermeiden und ein Array oder eine Liste an eine akzeptierende Methode zu übergeben vararg?
Wackaloon

5
Funktioniert gut! Eine Randnotiz, die für andere nützlich sein kann, ist, dass dieser Operator anscheinend nur für Array und nicht für List funktioniert. Sie müssen also toTypedArray()die Liste aufrufen, bevor Sie den Spread-Operator anwenden
Simon Ninon,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.