Die Beispiele in diesem Artikel fassen die Verwendung von Generika in Java zusammen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
1 Grundlegende Verwendung
public interface List<E> { void add(E); Iterator<E> iterator(); }
2 Generics und Unterklassen
Child ist eine Unterklasse von Parent, List
Deshalb ist List
List<String> ls = new ArrayList<String>(); //1 List<Object> lo = ls; //2 lo.add(new Object()); // 3 String s = ls.get(0); // 4,将object转换为string将失败。
3 Platzhalter
Aus Grund 2 lautet die Ausgabe der folgenden Implementierung für die einheitliche Menge Nein
void printCollection(Collection<Object> c) { for (Object o: c) { // do something } }
Daher wird das Platzhalterzeichen ? benötigt:
void printCollection(Collection<?> c) { for (Object o: c) { // 1 // do something } } // ok
Das ? bedeutet hier, dass der Typ unbekannt ist, aber jedes Objekt ein Objekt ist. also das obige Beispiel Die 1 ist richtig. Aber das folgende Beispiel ist falsch:
void add(Collection<? extends MyClass> c) { c.add(new MyClass()); // wrong } // ok
Der Grund ist auch sehr klar: ? erweitert MyClass zeigt an, dass der Typ eine Unterklasse von MyClass ist, der spezifische Typ jedoch nicht bekannt ist
4. Generische Methode
Das obige Beispiel kann wie folgt implementiert werden:
<T> add(Collection<T> c, T t) { c.add(t); }
Der Compiler hilft bei der Typkonvertierung und stellt gleichzeitig die Semantik sicher.
5. Vergleich der generischen Laufzeit
List<String> l1 = new ArrayList<String>(); List<Integer> l2 = new ArrayList<Integer>(); System.out.println(l1.getClass() == l2.getClass()); // true
Weil die Laufzeit generischer Klassen gleich ist.
6 Generische Arrays (potenziell typunsicher)
List<String>[] lsa = new ArrayList<String>[10]; // error
Kann nach Möglichkeit typunsicher sein. Zum Beispiel:
Object o = lsa; Object []oa = (Object[])o; List<Integer> li = new ArrayList<Integer>(); li.add(new Integer(3)); oa[1] = li; String s = lsa[1].get(0); // runtime error
Ich hoffe, dass dieser Artikel für die Java-Programmierung aller hilfreich sein wird.
Weitere Artikel zur Zusammenfassung der Verwendung von Generika in Java finden Sie auf der chinesischen PHP-Website!