Heim  >  Artikel  >  Java  >  Die Generika von Java im Detail

Die Generika von Java im Detail

黄舟
黄舟Original
2017-02-24 09:52:341368Durchsuche


Fortsetzung der obigen Java-Generika

1. Eingeschränkte Generika

  Oben verwenden wir die Klasse class GenDemo8742468051c85b06f0a0af9e3e506b5c, den Inhaber von T There Es gibt keine Begrenzung des Umfangs und entspricht tatsächlich Object
Aber manchmal müssen wir Parametertypen übergeben, die Implementierungen oder Unterklassen einer bestimmten Schnittstelle oder Klasse sind, und nicht unbegrenztes Ojbect
, also verwenden wir eingeschränkte Generika. Wieder einmal lassen wir T als Entschuldigung für die Implementierung von Collection dienen:

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 Durch die Verwendung eingeschränkter Generika wird festgelegt, dass der Typ des Halters T nur die Implementierungsklasse von Collection If sein kann Wird eine Klasse übergeben, die keine Sammlung ist, wird beim Übersetzen ein Fehler gemeldet.

Hinweis: 2a9303dff3eed1b561b75d0dce9e5a56 verwendet das Schlüsselwort extends, aber Sie können auch Schnittstellen oder Klassen nach Extends verwenden. Es handelt sich hier nicht um Vererbung, es sollte hier der Typ verstanden werden da T eine Implementierungsklasse ist, die die xx-Schnittstelle implementiert, oder eine Unterklasse, die die xx-Klasse erbt.
Das Beispiel hier zeigt nur die Typbeschränkung der generischen Methode. Für die Beschränkung von Typparametern in der generischen Klasse werden genau die gleichen Regeln verwendet, sie werden jedoch am Kopf der Klassendeklaration hinzugefügt, z :

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

2. Multi-Interface-Einschränkungen

Verwenden Sie hier hauptsächlich das Schlüsselwort „extends“ und „extends“, das heißt, „extend“ wird zum Implementieren von Schnittstellen und verwendet Geerbte Klassen.Aber folgt immer noch dem Anwendungssystem, Java kann nur eine Klasse erben und mehrere Schnittstellen implementieren. Das heißt:

<T extends SomeClass & interface1 & interface2 & interface3>

3. Wildcard-Generika

Fortsetzung der oben genannten Java-Generika

1. Eingeschränkte Generika

Oben erstellen wir die Die Klasse class GenDemo8742468051c85b06f0a0af9e3e506b5c hat keine Begrenzung für den Umfang des Halters T, der eigentlich dem Objekt entspricht
Aber manchmal müssen wir den Parametertyp als Implementierung oder Unterklasse einer bestimmten Schnittstelle oder Klasse übergeben das unbegrenzte Ojbect
Verwenden Sie also eingeschränkte Generika. Wieder einmal lassen wir T als Entschuldigung für die Implementierung von Collection dienen:

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 Durch die Verwendung eingeschränkter Generika wird festgelegt, dass der Typ des Halters T nur die Implementierungsklasse von Collection If sein kann Wird eine Klasse übergeben, die keine Sammlung ist, wird beim Übersetzen ein Fehler gemeldet.

Hinweis: 2a9303dff3eed1b561b75d0dce9e5a56 verwendet das Schlüsselwort extends, aber Sie können auch Schnittstellen oder Klassen nach Extends verwenden. Es handelt sich hier nicht um Vererbung, es sollte hier der Typ verstanden werden da T eine Implementierungsklasse ist, die die xx-Schnittstelle implementiert, oder eine Unterklasse, die die xx-Klasse erbt.
Das Beispiel hier zeigt nur die Typbeschränkung der generischen Methode. Für die Beschränkung von Typparametern in der generischen Klasse werden genau die gleichen Regeln verwendet, sie werden jedoch am Kopf der Klassendeklaration hinzugefügt, z :

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

2. Multi-Interface-Einschränkungen

Verwenden Sie hier hauptsächlich das Schlüsselwort „extends“ und „extends“, das heißt, „extend“ wird zum Implementieren von Schnittstellen und verwendet Geerbte Klassen.Aber folgt immer noch dem Anwendungssystem, Java kann nur eine Klasse erben und mehrere Schnittstellen implementieren. Das heißt:

<T extends SomeClass & interface1 & interface2 & interface3>

3. Wildcard-Generika

Das Obige ist der ausführliche Inhalt von Generika in Java. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www .php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Reflexionsgrundlagen von JavaNächster Artikel:Reflexionsgrundlagen von Java