14 votes

Liste vs Liste<Objet>

Pourquoi perdons-nous la sécurité des types lorsque nous utilisons List et non en utilisant List<Object> ? Ne s'agit-il pas essentiellement de la même chose ?

EDITAR : J'ai constaté que le texte suivant donne une erreur de compilation

public class TestClass
{
    static void func(List<Object> o, Object s){
        o.add(s);
    }

    public static void main(String[] args){
        func(new ArrayList<String>(), new Integer(1));
    }
}

alors que ce n'est pas le cas

public class TestClass
{
    static void func(List o, Object s){
        o.add(s);
    }

    public static void main(String[] args){
        func(new ArrayList<String>(), new Integer(1));
    }
}

Pourquoi ?

0voto

Anil Singh Points 11

L'effacement des types est une réponse, ainsi que la rétrocompatibilité avec les versions antérieures à Java 1.5 et une vérification plus stricte des types dans le cas de la première.

Les génériques ont été introduits dans le langage Java afin de fournir des contrôles de type plus stricts au moment de la compilation et de prendre en charge la programmation générique. Pour mettre en œuvre les génériques, le compilateur Java applique l'effacement de type à :

Remplacer tous les paramètres de type dans les types génériques par leurs bornes ou par Object si les paramètres de type ne sont pas bornés. Le bytecode produit ne contient donc que des classes, interfaces et méthodes ordinaires. Insérez des casts de type si nécessaire pour préserver la sécurité des types. Générer des méthodes de pont pour préserver le polymorphisme dans les types génériques étendus. L'effacement des types garantit qu'aucune nouvelle classe n'est créée pour les types paramétrés ; par conséquent, les génériques n'entraînent aucune surcharge d'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X