Heim > Java > javaLernprogramm > Hauptteil

Die Generika von Java im Detail

黄舟
Freigeben: 2017-02-24 09:52:34
Original
1371 Leute haben es durchsucht


Fortsetzung der obigen Java-Generika

1. Eingeschränkte Generika

  Oben verwenden wir die Klasse class GenDemo<T>, 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;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

ˆ class GenDemo<T extends Collection> 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: <T extends Collection> 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所拥有的特性了}
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

3. Wildcard-Generika

Fortsetzung der oben genannten Java-Generika

1. Eingeschränkte Generika

Oben erstellen wir die Die Klasse class GenDemo<T> 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;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

ˆ class GenDemo<T extends Collection> 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: <T extends Collection> 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所拥有的特性了}
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!