Maison >Java >javaDidacticiel >Pourquoi la conversion d'un tableau d'objets en un tableau d'entiers entraîne-t-elle une exception ClassCastException ?

Pourquoi la conversion d'un tableau d'objets en un tableau d'entiers entraîne-t-elle une exception ClassCastException ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 13:03:011040parcourir

Why Does Casting an Object Array to an Integer Array Result in a ClassCastException?

Pourquoi la conversion d'un tableau d'objets en un tableau d'entiers déclenche une exception ClassCastException

L'extrait de code suivant rencontre une erreur :

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

L'erreur, "java.lang.ClassCastException : [Ljava.lang.Object; ne peut pas être converti en [Ljava.lang.Integer;", apparaît dans la dernière ligne.

Raison :
Le problème vient du fait que vous ne pouvez pas traiter un tableau d’entiers comme un tableau d’objets. Alors que Integer[] est un sous-type de Object[], Object[] n'est pas un sous-type de Integer[].

Par conséquent, tenter de convertir un Object[] en Integer[] entraîne une ClassCastException.

Code alternatif :
Pour résoudre ce problème, utilisez l'une des méthodes suivantes :

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

Vous pouvez également empêcher l'exception ClassCastException en vous assurant que le tableau les éléments sont tous de type Integer, comme dans le code correct suivant :

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

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