Maison  >  Article  >  Java  >  Mécanisme d'implémentation des génériques en Java

Mécanisme d'implémentation des génériques en Java

WBOY
WBOYoriginal
2024-04-12 18:09:011046parcourir

Les génériques Java utilisent la technologie d'effacement de type pour éliminer les informations de type au moment de l'exécution et conserver les informations structurelles. Il utilise des caractères génériques pour représenter n'importe quel type et limite la portée du type via des génériques délimitants. Grâce à l'effacement de type, les génériques augmentent la réutilisabilité et la flexibilité du code, réduisant ainsi les frais généraux et le potentiel d'erreur.

Java 中泛型的实现机制

Mécanisme d'implémentation des génériques en Java

Les génériques sont une fonctionnalité puissante du langage de programmation Java qui vous permet de créer des classes et des méthodes pouvant fonctionner sur différents types de données. Cela améliore la réutilisabilité et la flexibilité du code.

Effacement de type

L'implémentation des génériques en Java repose sur la technologie effacement de type. Cela signifie que lors de la compilation du code Java, le compilateur efface les informations de type générique. Seules les informations structurelles du type générique sont conservées, comme le nom et le nombre de paramètres du type.

Cette approche permet d'accéder aux informations de type générique au moment de l'exécution sans créer de problèmes de surcharge ou de performances supplémentaires.

Wild Cards

Le Wildcard en Java est un type spécial de type générique qui vous permet de spécifier un espace réservé qui peut correspondre à n'importe quel type. Les caractères génériques sont représentés par des points d'interrogation (?).

Par exemple, la méthode suivante acceptera une liste de n'importe quel type :

public static <T> void printList(List<T> list) {
    for (T element : list) {
        System.out.println(element);
    }
}

List<String> strList = List.of("a", "b", "c");
printList(strList); // 可打印字符串类型列表

Bounded Generics

Bounded Genericsvous permet de limiter la portée d'un type générique. Vous pouvez spécifier un type de limite et tous les types acceptés doivent être ce type ou sa sous-classe ou interface.

Par exemple, la méthode suivante acceptera tout type qui implémente l'interface Comparable : Comparable 接口的类型:

public static <T extends Comparable<T>> T max(T a, T b) {
    return a.compareTo(b) > 0 ? a : b;
}

Integer maxInt = max(10, 20); // 可在整数类型上使用该方法

实战案例

假设您要创建一个可以存储任何类型数据的哈希表。您可以使用 HashMapb56561a2c0bc639cf0044c0859afb88f 类,其中 K 是密钥类型,V

Map<String, Integer> studentAges = new HashMap<>();
studentAges.put("John", 20);
studentAges.put("Mary", 22);

System.out.println(studentAges.get("John")); // 输出:20

Exemple pratique

Supposons que vous souhaitiez créer une table de hachage pouvant stocker tout type de données. Vous pouvez utiliser la classe HashMapb56561a2c0bc639cf0044c0859afb88f, où K est le type de clé et V est le type de valeur : 🎜rrreee🎜Generics autorisé Vous pouvez facilement créer des programmes qui fonctionnent avec différents types de données. Cela augmente la réutilisabilité du code, la flexibilité et réduit le risque d’erreurs. 🎜

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!

Déclaration:
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