Maison >Java >javaDidacticiel >Pourquoi la conversion d'un tableau d'objets en un tableau d'entiers entraîne-t-elle 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!