Maison > Java > javaDidacticiel > Les génériques de Java en profondeur

Les génériques de Java en profondeur

黄舟
Libérer: 2017-02-24 09:52:34
original
1418 Les gens l'ont consulté


Suite des génériques java ci-dessus

1. Génériques restreints

  Dans ce qui précède nous utilisons la classe class GenDemo<T>, le détenteur de T Là Il n'y a pas de limite à la portée, et c'est en fait équivalent à Object
Mais parfois nous devons transmettre des types de paramètres qui sont des implémentations ou des sous-classes d'une certaine interface ou classe, plutôt qu'un Ojbect illimité
, nous utilisons donc génériques restreints. Encore une fois, nous laissons T servir d'excuse pour l'implémentation de Collection :

import java.util.collection;public class GenDemo<T extends Collection>  {
    private T t;    public GenDemo(T t) {        this.t = t;
    }    public void setT(T t) {        this.t = t;
    }    public T getT(){        return T;
    }
}
Copier après la connexion
Copier après la connexion

ˆ class GenDemo<T extends Collection> L'utilisation de génériques restreints détermine que le type du titulaire T ne peut être que la classe d'implémentation de Collection If. une classe non-Collection est passée dans , une erreur sera signalée lors de la traduction.

Remarque : <T extends Collection> utilise le mot-clé extends, mais vous pouvez également utiliser des interfaces ou des classes après extends. L'extension ici n'est pas un héritage, elle devrait être ici Le type compris. car T est une classe d'implémentation qui implémente l'interface xx, ou une sous-classe qui hérite de la classe xx.
L'exemple ici démontre uniquement la limitation de type de la méthode générique. Les mêmes règles exactes sont utilisées pour la limitation des paramètres de type dans la classe générique, mais elles sont ajoutées en tête de la déclaration de classe, comme par exemple. :

public class Demo<T extends Comparable & Serializable> {
    // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}
Copier après la connexion
Copier après la connexion

2. Restrictions multi-interfaces

Utilisez principalement le mot-clé extends qui unifie ici les concepts originaux d'extensions et d'implémentations, c'est-à-dire que l'extension est utilisée pour implémenter des interfaces et. classes héritées.Mais,suit toujours le système d'application, Java ne peut hériter que d'une seule classe et peut implémenter plusieurs interfaces. C'est-à-dire :

<T extends SomeClass & interface1 & interface2 & interface3>
Copier après la connexion
Copier après la connexion

3. Génériques génériques

Suite des génériques Java ci-dessus

1. Génériques restreints

Dans ce qui précède, nous faisons le class class GenDemo<T> n'a aucune limite sur la portée du titulaire T, qui est en fait équivalent à Object
Mais parfois nous devons transmettre le type de paramètre pour qu'il soit l'implémentation ou la sous-classe d'une certaine interface ou classe, plutôt que. l'Ojbect illimité
Utilisez donc des génériques restreints. Encore une fois, nous laissons T servir d'excuse pour l'implémentation de Collection :

import java.util.collection;public class GenDemo<T extends Collection>  {
    private T t;    public GenDemo(T t) {        this.t = t;
    }    public void setT(T t) {        this.t = t;
    }    public T getT(){        return T;
    }
}
Copier après la connexion
Copier après la connexion

ˆ class GenDemo<T extends Collection> L'utilisation de génériques restreints détermine que le type du titulaire T ne peut être que la classe d'implémentation de Collection If. une classe non-Collection est passée dans , une erreur sera signalée lors de la traduction.

Remarque : <T extends Collection> utilise le mot-clé extends, mais vous pouvez également utiliser des interfaces ou des classes après extends. L'extension ici n'est pas un héritage, elle devrait être ici Le type compris. car T est une classe d'implémentation qui implémente l'interface xx, ou une sous-classe qui hérite de la classe xx.
L'exemple ici démontre uniquement la limitation de type de la méthode générique. Les mêmes règles exactes sont utilisées pour la limitation des paramètres de type dans la classe générique, mais elles sont ajoutées en tête de la déclaration de classe, comme par exemple. :

public class Demo<T extends Comparable & Serializable> {
    // T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了}
Copier après la connexion
Copier après la connexion

2. Restrictions multi-interfaces

Utilisez principalement le mot-clé extends qui unifie ici les concepts originaux d'extensions et d'implémentations, c'est-à-dire que l'extension est utilisée pour implémenter des interfaces et. classes héritées.Mais,suit toujours le système d'application, Java ne peut hériter que d'une seule classe et peut implémenter plusieurs interfaces. C'est-à-dire :

<T extends SomeClass & interface1 & interface2 & interface3>
Copier après la connexion
Copier après la connexion

3. Génériques génériques

Ce qui précède est le contenu détaillé des génériques en Java. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. .php.cn) !


Étiquettes associées:
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 numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal