Generische Methoden verfügen über Typparameter, die den ausführbaren Datentyp angeben. Platzhalter stellen unbekannte Typen dar, obere Platzhalter geben an, dass der Typ eine Unterklasse eines bestimmten Typs oder sich selbst ist, und untere Platzhalter geben an, dass der Typ eine übergeordnete Klasse oder sich selbst ist. Der Unterschied zwischen generischen Java-Methoden und Platzhaltern. Generische Methoden und Platzhalter sind zwei Mechanismen, die die Fähigkeiten von Generika weiter verbessern. In diesem Artikel werden ihre Unterschiede untersucht und anhand praktischer Beispiele gezeigt, wie man sie nutzt.
Generische Methoden
Eine generische Methode ist eine Methode, die Typparameter hat. Typparameter geben die Datentypen an, die eine Methode verwenden kann. Beispielsweise kann die folgende generische Methode mit einer Liste beliebigen Typs arbeiten:
public static <T> void printList(List<T> list) { for (T item : list) { System.out.print(item + " "); } System.out.println(); }
List<String> names = new ArrayList<>(); names.add("John"); names.add("Mary"); printList(names); // 输出:John Mary
Der Platzhalter für die Obergrenze (? erweitert T)
gibt an, dass der unbekannte Typ eine Unterklasse des Typs T oder T selbst ist.
Der Platzhalter für die untere Grenze (? super T)gibt an, dass der unbekannte Typ die übergeordnete Klasse des Typs T oder T selbst ist.
Zum Beispiel verwendet die folgende generische Methode einen Platzhalter für die Obergrenze, um die Oberklasse aller Objekte in der Liste abzurufen:public static <T> List<Class<?>> getSuperclasses(List<? extends T> list) { List<Class<?>> superclasses = new ArrayList<>(); for (T item : list) { superclasses.add(item.getClass().getSuperclass()); } return superclasses; }
public static <T extends Animal> void printAnimals(List<T> animals) { for (T animal : animals) { System.out.println(animal.getName()); } }
Wildcards
Wir können auch Platzhalter verwenden, um jede Unterklasse von Tier darzustellen:public static void printAnimals(List<? extends Animal> animals) { // 使用上限通配符 for (Animal animal : animals) { // 使用上限通配符 System.out.println(animal.getName()); } }
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen generischen Java-Methoden und der Verwendung von Platzhaltern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!