Fortsetzung der obigen Java-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; } }
ˆ 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所拥有的特性了}
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>
Fortsetzung der oben genannten Java-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; } }
ˆ 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所拥有的特性了}
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>
Das Obige ist der ausführliche Inhalt von Generika in Java. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www .php.cn)!