Maison > Java > javaDidacticiel > le corps du texte

Pourquoi les types bruts posent-ils des problèmes lorsque vous travaillez avec des méthodes génériques en Java ?

Barbara Streisand
Libérer: 2024-11-12 08:10:02
original
891 Les gens l'ont consulté

Why Do Raw Types Cause Problems When Working with Generic Methods in Java?

Comprendre le lien entre les types bruts et les méthodes génériques

En Java, l'utilisation de types bruts peut entraîner des conséquences inattendues lors de l'interaction avec des méthodes génériques.

Considérez l'extrait de code suivant :

ArrayList<String> a = new ArrayList<String>();
String[] s = a.toArray(new String[0]);
Copier après la connexion

Ce code se compile avec succès dans JDK 1.6 et JDK 1.7. Cependant, si nous déclarons la référence List comme type brut :

ArrayList a = new ArrayList();
String[] s = a.toArray(new String[0]);
Copier après la connexion

Nous rencontrons une erreur du compilateur indiquant qu'un String[] est requis mais qu'un Object[] a été trouvé.

Ceci ce comportement vient du fait que l'utilisation d'un type brut pour la référence List supprime la possibilité d'utiliser des génériques pour les membres d'instance de ce type. Ceci ne se limite pas aux méthodes génériques, comme le montre l'exemple suivant :

public class MyContainer<T> {

    public List<String> strings() {
        return Arrays.asList("a", "b");
    }
}

MyContainer container = new MyContainer<Integer>();
List<String> strings = container.strings(); // gives an unchecked warning!
Copier après la connexion

Ce comportement est indiqué explicitement dans la spécification du langage Java (JLS) :

Le type d'un constructeur (§ 8.8), méthode d'instance (§8.4, §9.4), ou champ non statique (§8.3) M d'un type brut C qui n'est pas hérité de ses superclasses ou superinterfaces est le type brut qui correspond à l'effacement de son type dans la déclaration générique correspondant à C.

Par conséquent, l'utilisation des types bruts doit être effectuée avec prudence, car elle peut entraîner des limitations inattendues et même des erreurs de compilation lors de l'utilisation de méthodes génériques ou accéder aux membres de l'instance.

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