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

Les génériques de Java en profondeur

黄舟
黄舟original
2017-02-24 09:52:341368parcourir


Suite des génériques java ci-dessus

1. Génériques restreints

  Dans ce qui précède nous utilisons la classe class GenDemo8742468051c85b06f0a0af9e3e506b5c, 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;
    }
}

ˆ class GenDemo2a9303dff3eed1b561b75d0dce9e5a56 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 : 2a9303dff3eed1b561b75d0dce9e5a56 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所拥有的特性了}

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>

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 GenDemo8742468051c85b06f0a0af9e3e506b5c 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;
    }
}

ˆ class GenDemo2a9303dff3eed1b561b75d0dce9e5a56 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 : 2a9303dff3eed1b561b75d0dce9e5a56 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所拥有的特性了}

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>

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) !


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
Article précédent:Bases de réflexion de JavaArticle suivant:Bases de réflexion de Java