Maison >Java >javaDidacticiel >Pourquoi Arrays.asList() ne fonctionne-t-il pas avec les tableaux primitifs ?

Pourquoi Arrays.asList() ne fonctionne-t-il pas avec les tableaux primitifs ?

DDD
DDDoriginal
2025-01-03 07:06:39772parcourir

Why Doesn't Arrays.asList() Work with Primitive Arrays?

Arrays.asList() et tableaux primitifs

Lorsque vous tentez de convertir un tableau de données primitives en une liste à l'aide de Arrays.asList( ), on peut rencontrer des incohérences. Cet article explore le problème et propose des solutions.

Explication du problème

La méthode Arrays.asList() accepte les arguments variables qui représentent un tableau. Cependant, il ne prend pas en charge les types de données primitifs tels que int[], contrairement aux types de référence comme Integer[]. En conséquence, le deuxième exemple fourni :

int[] ints = new int[] {1,2,3,4,5};
List<Integer> list = Arrays.asList(ints);

renvoie une List, pas une List.

Autoboxing

L'Autoboxing, qui convertit les types de données primitifs en leurs homologues wrapper, ne s'applique pas aux tableaux de primitives. Par conséquent, le tableau int[] n'est pas automatiquement converti en tableau Integer[].

Solution

Pour résoudre ce problème, on peut exploiter des bibliothèques tierces telles que comme méthode com.google.common.primitive.Ints.asList de Guava. Il crée une liste de valeurs encadrées à partir d'un tableau primitif. Alternativement, on peut créer manuellement un tableau Integer[] et attribuer des valeurs à partir du tableau int[], c'est-à-dire

int[] ints = new int[] {1,2,3,4,5};
Integer[] integers = new Integer[ints.length];
for (int i = 0; i < ints.length; i++) {
    integers[i] = ints[i];
}
List<Integer> list = Arrays.asList(integers);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn