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

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

高洛峰
高洛峰Original
2016-12-19 15:43:112250Durchsuche

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

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

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>{}

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){}

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>;

2. Generics zu Instanziierungsdefinitionsmethoden076402276aae5dbec7f672f8f4e5cc81
public class MyList<E> extends ArrayList<E> implements List<E> {...}

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;


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

Stellungnahme:
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