webentwicklung-frage-antwort-db.com.de

Dynamisches Hinzufügen von Elementen zu ArrayList in Groovy

Ich bin neu bei Groovy und obwohl ich viele Artikel und Fragen dazu gelesen habe, weiß ich immer noch nicht, was los ist. Soweit ich bis jetzt verstanden habe, ist der zugrunde liegende Typ beim Erstellen eines neuen Arrays in Groovy Java ArrayList. Dies bedeutet, dass die Größe geändert werden sollte und Sie ihn als leer initialisieren können sollten und dann dynamisch Elemente durch die add-Methode hinzufügen, wie folgt:

MyType[] list = []
list.add(new MyType(...))

Diese Kompilierung schlägt jedoch zur Laufzeit fehl: Keine Signatur der Methode: [LMyType; .add () gilt für Argumenttypen: (MyType) -Werte: [MyType @ 383bfa16]

Was ist der richtige Weg oder die richtige Art, dies zu tun?

40
Captain Franz

Der groovige Weg, dies zu tun, ist

def list = []
list << new MyType(...)

dadurch wird eine Liste erstellt und der überladene Operator leftShift zum Anhängen eines Elements verwendet

In Groovy Dokumente zu Listen finden Sie viele Beispiele.

56
doelleri

Womit Sie tatsächlich erstellt haben:

MyType[] list = []

War ein Array mit fester Größe (nicht Liste) mit der Größe 0. Sie können ein Array mit fester Größe mit der Größe von Beispiel 4 erstellen mit:

MyType[] array = new MyType[4]

Aber es gibt natürlich keine Add-Methode.

Wenn Sie eine Liste mit def erstellen, entspricht dies in etwa dem Erstellen dieser Instanz mit Object (Weitere Informationen zu defhier ). Und [] Erzeugt in diesem Fall ein leeres ArrayList.

Mit def list = [] Können Sie dann neue Elemente mit der add() -Methode von ArrayList anhängen.

list.add(new MyType())

Oder grooviger mit überladenem Linksschalthebel:

list << new MyType() 
20
Paweł Piecyk