Maison > Java > javaDidacticiel > le corps du texte

Pourquoi `List.toArray()` lance-t-il une `ClassCastException` dans Android lors de la diffusion vers `String[]` ?

Barbara Streisand
Libérer: 2024-11-01 10:49:02
original
836 Les gens l'ont consulté

Why Does `List.toArray()` Throw a `ClassCastException` in Android When Casting to `String[]`?

ClassCastException sur (String[])List.toArray() dans Android

Lors de la tentative de diffusion d'une ArrayList à un String[] à l'aide de la méthode toArray(), les applications Android rencontrent généralement une ClassCastException. Par exemple, le code suivant déclenche cette erreur :

<code class="java">final String[] v1 = i18nCategory.translation.get(id);
final ArrayList<String> v2 = new ArrayList<>(Arrays.asList(v1));
String[] v3 = (String[]) v2.toArray();</code>
Copier après la connexion

Cela se produit quel que soit le contenu de la v2 (même un tableau vide).

Explication

Cette erreur se produit car toArray() renvoie un Object[], pas un String[]. Les génériques ne sont disponibles qu'au moment de la compilation, de sorte que la machine virtuelle Java (JVM) ne peut pas déterminer le type de tableau à créer. Par conséquent, la valeur par défaut est Object[], qui ne peut pas être converti en String[].

Solution

Pour résoudre ce problème, spécifiez explicitement le type de tableau à l'aide de toArray(T[] a) et fournissez le type de tableau souhaité en tant que paramètre. Par exemple, ce code créera correctement un String[] :

<code class="java">String[] v3 = v2.toArray(new String[v2.size()]);</code>
Copier après la connexion

Cette méthode garantit que le tableau renvoyé sera du type et de la taille corrects.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!