Fondamentalement, j'ai une liste de tableaux d'emplacements:
ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>();
ci-dessous j'appelle la méthode suivante:
.getMap();
les paramètres de la méthode getMap () sont:
getMap(WorldLocation... locations)
Le problème que j'ai, c'est que je ne sais pas comment passer la liste ENTIÈRE locations
dans cette méthode.
J'ai essayé
.getMap(locations.toArray())
mais getMap n'accepte pas cela car il n'accepte pas les objets [].
Maintenant, si j'utilise
.getMap(locations.get(0));
cela fonctionnera parfaitement ... mais je dois en quelque sorte passer dans TOUS les emplacements ... Je pourrais bien sûr continuer à ajouter locations.get(1), locations.get(2)
etc., mais la taille du tableau varie. Je ne suis tout simplement pas habitué à tout le concept d'unArrayList
Quelle serait la façon la plus simple de procéder? J'ai l'impression de ne pas penser directement en ce moment.
Réponses:
Article source: Passer une liste comme argument à une méthode vararg
Utilisez la
toArray(T[] arr)
méthode.(
toArray(new WorldLocation[0])
fonctionne également, mais vous alloueriez un tableau de longueur nulle sans raison.)Voici un exemple complet:
la source
someMethod(someList.toArray(new ArrayList<Something>[someList.size()]))
, vous obtiendrez un avertissement qui est très ennuyeux si la fonction fait plus de quelques lignes (car vous pouvez soit la supprimer pour toute la fonction, soit créer le tableau dans une étape supplémentaire et supprimer l'avertissement sur la variable que vous stocker.En Java 8:
la source
locations.toArray(WorldLocations[]::new)
semble également fonctionner depuis java 11 (sans le.stream()
)Une version plus courte de la réponse acceptée en utilisant la goyave:
peut être encore raccourci en important statiquement dans Array:
la source
Tu peux faire:
ou
ou
@SuppressWarnings("unchecked")
est nécessaire pour supprimer l'avertissement ide.la source