Grundsätzlich habe ich eine ArrayList von Standorten:
ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>();
darunter nenne ich folgende Methode:
.getMap();
Die Parameter in der Methode getMap () sind:
getMap(WorldLocation... locations)
Das Problem, das ich habe, ist, dass ich nicht sicher bin, wie ich die GANZE Liste locations
dieser Methode weitergeben soll.
ich habe es versucht
.getMap(locations.toArray())
getMap akzeptiert dies jedoch nicht, da es keine Objekte [] akzeptiert.
Nun, wenn ich benutze
.getMap(locations.get(0));
es wird perfekt funktionieren ... aber ich muss irgendwie ALLE Speicherorte übergeben ... ich könnte natürlich weiterhin hinzufügen locations.get(1), locations.get(2)
usw., aber die Größe des Arrays variiert. Ich bin einfach nicht an das ganze Konzept eines gewöhntArrayList
Was wäre der einfachste Weg, dies zu tun? Ich habe das Gefühl, dass ich gerade nicht klar denke.
java
variadic-functions
MJ93
quelle
quelle
Antworten:
Quellartikel : Übergeben einer Liste als Argument an eine vararg-Methode
Verwenden Sie die
toArray(T[] arr)
Methode.(Funktioniert
toArray(new WorldLocation[0])
auch, aber Sie würden ohne Grund ein Array mit der Länge Null zuweisen.)Hier ist ein vollständiges Beispiel:
quelle
someMethod(someList.toArray(new ArrayList<Something>[someList.size()]))
Sie eine Warnung, die sehr ärgerlich ist, wenn die Funktion länger als ein paar Zeilen ist (weil Sie sie entweder für die gesamte Funktion unterdrücken können oder das Array in einem zusätzlichen Schritt erstellen und die Warnung für die von Ihnen verwendete Variable unterdrücken müssen Speichern Sie es.In Java 8:
quelle
locations.toArray(WorldLocations[]::new)
scheint auch zu funktionieren seit Java 11 (ohne die.stream()
)Eine kürzere Version der akzeptierten Antwort mit Guava:
kann durch statischen Import in Array weiter verkürzt werden:
quelle
Du kannst tun:
oder
oder
@SuppressWarnings("unchecked")
wird benötigt, um die ide-Warnung zu entfernen.quelle