Generika sind eine wichtige Funktion von JAVA und können die Code-Wiederverwendungsrate verbessern.
Implementierung: Verwenden Sie Platzhalter in generischen Methoden
Erstellen Sie eine Klasse: WildcardsTest.
Erstellen Sie eine Methode getMiddle(), um den Mittelwert einer bestimmten Liste abzurufen.
Verwenden Sie bei Generika „?“ als Platzhalterzeichen wie bei gewöhnlichen Typparametern. Platzhalterzeichen können beispielsweise das Schlüsselwort „extends“ verwenden, um die Obergrenze des Werts festzulegen. Beispielsweise bedeutet
erweitert Number>
, dass Byte, Double, Float und Integer für diesen Typparameter geeignet sind.
Außerdem gibt es eine Obergrenze und eine Untergrenze, wie zum Beispiel
super Number>
w bedeutet, dass der Typparameter die übergeordnete Klasse der Number-Klasse ist, wie zum Beispiel Object.
package com.xiaoxuzhu; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre class="brush:php;toolbar:false"> * 修改记录: * 修改后版本 修改人 修改日期 修改内容 * 2022/5/10.1 xiaoxuzhu 2022/5/10 Create ** @date 2022/5/10 */ public class WildcardsTest { public static Object getMiddle(List extends Number> list) { return list.get(list.size() / 2); } public static void main(String[] args) { List
Generika
Sie können
1. Parametertypen werden bei der Erstellung von Klassen, generischen Klassen, verwendet.
2. Parametertypen werden bei der Erstellung von Schnittstellen, generischen Schnittstellen, verwendet.
3. Parametertypen werden bei der Erstellung von Methoden verwendet, generische Methoden. Beachten Sie die Deklarationsposition des generischen
? Geben Sie Platzhalter ein.
Mehrere Formen von Platzhaltern:
1.
2. Platzhalter für Obergrenze, erweitert Benutzer>. Gibt an, dass der Parametertyp nur eine Unterklasse von User sein kann.
3. Platzhalter für untere Grenze, Super-Benutzer>. Gibt an, dass der Parametertyp nur die übergeordnete Klasse von User sein kann.
public class P<T> { private T t; public T getT(){ return t; } //通配符 //设置指定类型的范围,超过范围就会报错 //extends : 指定范围必须是其(这里是List)子类 public void set(P<? extends List> list){ return; } //super : 指定类型必须是其(这里是List)父类 public void setSuper(P<? super List> list){ return; } public static void main(String[] args) { new P<String>(); //T会被替换成String new P<Integer>(); //T会被替换成Integer Person<String,List,Double,User> person = new Person<String,List,Double,User>();//T会被替换成String,B会被替换成List... person.eat("鱼"); } } class User<T extends P>{//这里给类的泛型指定范围,T必须要继承类P。 } //一个类可以同时指定多个泛型 class Person<T,B,S,N>{ private T t; private B b; private S s; private N n; public void eat(T t){ this.t = t; System.out.println("我正在吃"+this.t); } }
Die Deklaration von Generics gibt an, dass ein unbekannter Datentyp bei der Erstellung von Klassen, Schnittstellen und Methoden verwendet werden soll. Es kann vom Typ Integer oder String sein. Definieren Sie einfach seinen Typ als T, S oder N usw.
Beim Instanziieren müssen Sie den spezifischen T-Typ deklarieren.
Bei der Definition der Verwendungsmethode eines generischen Objekts wissen wir immer noch nicht, um welchen Typ T es sich handelt. Es kann sich um einen String-Typ oder einen Integer-Typ handeln. Wenn T als ein bestimmter generischer Datentyp definiert ist, können die Parameter nur von diesem Datentyp sein. Derzeit werden Platzhalter anstelle bestimmter generischer Datentypen verwendet.
Verwenden Sie Generika und Platzhalter, um die Wiederverwendbarkeit von Code zu verbessern.
Wenn Sie ein Objekt in zwei Teile unterteilen: Deklaration und Verwendung. Generics konzentrieren sich auf die Wiederverwendung von Code bei der Typdeklaration, während Wildcards sich auf die Wiederverwendung von Code bei der Verwendung konzentrieren. Generische Elemente werden verwendet, um die Unsicherheit über interne Datentypen zu definieren, und Platzhalter werden verwendet, um die Unsicherheit über den Typ der verwendeten Objekte zu definieren.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Platzhalter, um die generische Leistung von Java zu verbessern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!