Maison >Java >javaDidacticiel >Pourquoi `Arrays.asList()` ne met-il pas en boîte automatique les tableaux primitifs en Java ?

Pourquoi `Arrays.asList()` ne met-il pas en boîte automatique les tableaux primitifs en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 16:06:11435parcourir

Why Doesn't `Arrays.asList()` Autobox Primitive Arrays in Java?

L'énigme Arrays.asList() : comprendre ses limites

En Java, la méthode Arrays.asList fournit un moyen pratique de convertir un tableau dans une liste. Cependant, lorsqu'il s'agit de tableaux primitifs, tels que float[], nous rencontrons une anomalie.

Cet extrait de code fonctionne comme prévu, créant une liste d'objets Integer :

List<Integer> list = Arrays.asList(1,2,3,4,5);

Sur le d'un autre côté, le code suivant ne parvient pas à créer une List :

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

Au lieu de cela, la sortie est un List, mettant en évidence une divergence dans le comportement de Arrays.asList avec les tableaux primitifs.

  • Pourquoi cela se produit-il ?

Arrays.asList accepte un paramètre varargs, qui est un raccourci syntaxique pour un tableau. Cependant, dans le cas des primitives, il traite l'ensemble du tableau comme un seul élément au lieu de chaque valeur primitive. Cela donne une liste contenant un tableau de primitives, plutôt que des valeurs primitives individuelles enveloppées sous forme d'objets.

  • Cela peut-il être corrigé ?

Malheureusement , il n'existe pas de moyen simple de convertir un int[] en List en utilisant Arrays.asList. Pour y parvenir, il faut recourir à des bibliothèques externes ou à du code personnalisé.

  • Pourquoi l'autoboxing ne fonctionne-t-il pas ici ?

L'autoboxing convertit généralement les primitives dans leurs objets wrapper correspondants pour une utilisation dans les collections d'objets. Cependant, lorsqu’elle est appliquée à des tableaux de primitives, cela ne se produit pas au niveau des éléments. Cette limitation provient du fait que le boxing automatique des tableaux n'est pas pris en charge en Java.

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