web-dev-qa-db-fra.com

Passer une liste en tant que varargs

J'ai un List<Thing> Et je voudrais le passer à une méthode déclarée doIt(final Thing... things). Y-a-t-il un moyen de faire ça?

Le code ressemble à quelque chose comme ceci:

public doIt(final Thing... things)
{
    // things get done here
}

List<Thing> things = /* initialized with all my things */;

doIt(things);

Ce code ne fonctionne évidemment pas parce que doIt() prend Thing pas List<Thing>.

Existe-t-il un moyen de passer une liste en tant que varargs?

C'est dans une Android App, mais je ne vois pas pourquoi la solution ne s'appliquera à rien Java

59
xbakesx

Passez simplement things.toArray(new Thing[things.size()]).

99
SLaks

L'argument variadique est interprété en interne comme un tableau. Vous devez donc le convertir au préalable en tableau. Toujours dans votre méthode doIt, vous devez accéder aux éléments choses-s avec l'indexation de tableau.

1
zeller