Heim > Java > javaLernprogramm > Der Unterschied zwischen T und Fragezeichen (Platzhalter) in Java-Generika

Der Unterschied zwischen T und Fragezeichen (Platzhalter) in Java-Generika

高洛峰
Freigeben: 2016-12-19 15:43:11
Original
2280 Leute haben es durchsucht

Typen, die ursprünglich enthalten waren: einfache Typen und komplexe Typen. Komplexe Typen sind jetzt in zwei verschiedene Typen unterteilt Vererbungsbeziehung;

Die Vorteile von Generika sind:

Startversion

Generische Version
 public void write(Integer i, Integer[] ia);  public void write(Double  d, Double[] da);
Nach dem Login kopieren

Vereinfachter Code
 public <T> void write(T t, T[] ta);
Nach dem Login kopieren

Definieren Sie Generika

1. Definieren Sie nach der Klasse

Folgen Sie dem Klassennamen

Definieren Sie Generika T, S und S erbt T
 public class TestClassDefine<T, S extends T>{}
Nach dem Login kopieren

2. Definieren Sie nach dem Methodendekorator

Unmittelbar nach dem Modifikator (öffentlich)

Definieren Sie generisches T, S und S erbt T
 public <T, S extends T> T testGenericMethodDefine(T t, S s){}
Nach dem Login kopieren

Instanziieren Sie generische Elemente

1. Instanziieren Sie ein für eine Klasse definiertes Generikum.

Bei der ersten Deklaration oder Instanziierung einer Klassenvariablen. Zum Beispiel

zweite geerbte Klasse oder bei der Implementierung einer Schnittstelle. Zum Beispiel
    List<String> list;     list = new ArrayList<String>;
Nach dem Login kopieren

2. Generics zu Instanziierungsdefinitionsmethoden
public class MyList<E> extends ArrayList<E> implements List<E> {...}
Nach dem Login kopieren

Beim Aufruf einer generischen Methode führt der Compiler automatisch eine Zuweisung durch, wenn die Zuweisung nicht erfolgreich sein kann, a Es wird ein Kompilierungsfehler gemeldet.

Platzhalter (?)

Bei der Zuweisung gibt es Definitionen und Zuweisungen. Im obigen Abschnitt wird angegeben, dass alle Zuweisungen ein spezifischer Typ sind ist unsicher, wir verwenden stattdessen Platzhalter (?):

wie

Im Java-Sammlungsframework kann eine Klasse für Container, deren Parameterwerte unbekannten Typs sind, nur lesen seine Elemente, kann ihm aber keine Elemente hinzufügen, da sein Typ unbekannt ist, kann der Compiler nicht erkennen, ob der Typ des hinzugefügten Elements mit dem Typ des Containers kompatibel ist. Die einzige Ausnahme ist NULL
List<?> unknownList;  List<? extends Number> unknownNumberList;  
List<? super Integer> unknownBaseLineIntgerList;
Nach dem Login kopieren


Weitere Artikel zum Unterschied zwischen T und Fragezeichen (Platzhalter) in Java-Generika finden Sie auf der chinesischen PHP-Website!

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