233 votes

make arrayList.toArray () renvoie des types plus spécifiques

Ainsi, normalement, ArrayList.toArray() renverrait un type de Object[] .... mais supposons que c’est un Arraylist d’objet Custom , comment puis-je make toArray() pour retourner un type de Custom[] plutôt que Object[] ?

361voto

Mihai Claudiu Toader Points 6670

Comme ça:

 List<String> list = new ArrayList<String>();

String[] a = list.toArray(new String[list.size()]);
 

C'est tentant de le faire comme:

 String[] a = list.toArray(new String[0]);
 

mais l'implémentation interne réaffectera de toute façon un tableau correctement dimensionné, il est donc préférable de le faire dès le départ.

Si votre liste n'est pas correctement typée, vous devez effectuer un casting avant d'appeler toArray. Comme ça:

     List l = new ArrayList<String>();

    String[] a = ((List<String>)l).toArray(new String[l.size()]);
 

16voto

limc Points 14557

Il n'est pas vraiment nécessaire de renvoyer Object[] , par exemple: -

     List<Custom> list = new ArrayList<Custom>();
    list.add(new Custom(1));
    list.add(new Custom(2));

    Custom[] customs = new Custom[list.size()];
    list.toArray(customs);

    for (Custom custom : customs) {
        System.out.println(custom);
    }
 

Voici ma classe Custom : -

 public class Custom {
    private int i;

    public Custom(int i) {
        this.i = i;
    }

    @Override
    public String toString() {
        return String.valueOf(i);
    }
}
 

8voto

corsiKa Points 39442

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X