J’ai découvert aujourd’hui comment transformer tout simplement un objet de type List<MonType> en un tableau de type MonType[].
Il est plutôt dur de trouver ceci tout seul … mais une fois qu’on l’a vue une fois on peut gagner un temps fou !
Admettons que nous ayons les variables suivantes :
// Une liste que nous supposons remplie avec le contenu d'une collection List liste = new ArrayList(uneCollection); // Un tableau d'objets de type MonType que nous souhaitons renvoyer pour une raison quelconque MonType[] resu;
Nous aimerions tout simplement que resu contienne le contenu de liste. La solution manuelle serait de la forme ci-après (c’est cette portion de code que j’avais en tout cas écrite) :
resu = new MonType[liste.size()]; for(int i=0;i < resu.length; i++){ resu[i] = liste.get(i); }
… ce qui est bien mais pas top ! En fait, nous pouvons utiliser la méthode toArray() de la liste, mais il faut juste trouver comment typer notre résultat car par défaut toArray() renvoie un Object[].
Voici donc la ligne magique, regardez juste le paramètre qui est passé à toArray() :
resu = (MonType[]) liste.toArray(new MonType[0]);
Et voilà, nous y sommes ! Bon codage …