Les types génériques sont une nouvelle fonctionnalité de Java SE 1.5. L'essence des génériques réside dans les types paramétrés, ce qui signifie que le type de données sur lequel l'opération est effectuée est spécifié en tant que paramètre.
Avantages : >2. Compatibilité ascendante et descendante3. Code généralisé, le code peut être réutilisé davantage
4. écrit avec GJ (JAVA générique) peut être compilé pour java. Le serveur et la machine virtuelle apportent plus d'informations de type, ce qui fournit les conditions d'une optimisation ultérieure des programmes Java.
Comment fonctionnent les génériques en Java ? Qu'est-ce que l'effacement de type ? Comment ça marche ?
1. Vérification de type : effectuer une vérification de type avant de générer du bytecode
2. Effacement de type : tous les paramètres de type sont remplacés par leurs types qualifiés, y compris les classes, les variables et les méthodes (effacement de type. ) 3. Si l'effacement de type et le polymorphisme sont en conflit, une méthode de pont est générée dans la sous-classe pour résoudre le problème
4. Si une méthode générique est appelée, le type de retour est effacé, un cast. est inséré lors de l'appel de la méthode
Effacement du type :
Tous les paramètres de type sont remplacés par leurs types qualifiés :
Par exemple, T-> Object ? extends BaseClass->BaseClass
Comment ça marche :
Les génériques sont implémentés via l'effacement de type, le compilateur efface toutes les informations liées au type au moment de la compilation, donc il n'y a aucune information relative au type au moment de l'exécution. Par exemple, List est représenté par une seule liste au moment de l'exécution.
Le but de ceci est d'assurer la compatibilité avec les bibliothèques de classes binaires développées dans les versions antérieures à Java 5. Vous ne pouvez pas accéder aux paramètres de type au moment de l'exécution car le compilateur a converti le type générique en type primitif. En fonction de votre réponse à cette question générique, vous recevrez des questions complémentaires, telles que pourquoi les génériques sont implémentés par effacement de type ou des génériques incorrects qui provoqueront des erreurs de code du compilateur.
Pouvez-vous transmettre un List à une méthode qui accepte un paramètre List
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