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!