Maison  >  Article  >  Java  >  Comment convertir en toute sécurité un tableau d'objets en un tableau d'entiers en Java ?

Comment convertir en toute sécurité un tableau d'objets en un tableau d'entiers en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 21:50:02375parcourir

How Do I Safely Cast an Object Array to an Integer Array in Java?

Casting d'un tableau d'objets en tableau d'entiers : problème ClassCastException

Lors de la tentative de conversion d'un tableau d'objets en un tableau d'entiers, une erreur ClassCastException peut survenir . Cela se produit car, bien que Integer[] soit un sous-type de Object[], le tableau d'objets ne peut pas être directement affecté à un tableau d'entiers.

Considérez le code suivant :

Object[] a = new Object[1];
Integer b=1;
a[0]=b;
Integer[] c = (Integer[]) a;

Ce code génère une ClassCastException car la dernière ligne tente d'attribuer un tableau d'objets à un tableau d'entiers. Pour résoudre ce problème, il faut copier manuellement les éléments du tableau Object dans un tableau Integer nouvellement créé.

Integer[] intArray = new Integer[a.length];
for (int i = 0; i < a.length; i++) {
    intArray[i] = (Integer) a[i];
}

Alternativement, on peut utiliser les méthodes Arrays.copyOf() ou Arrays.copyOfRange() :

Integer[] intArray = Arrays.copyOf(a, a.length, Integer[].class);
Integer[] intArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);

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