Heim >Java >javaLernprogramm >Zusammenfassung der Verwendung von Generika in Java
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, Listbca3c305396ecbc247bea2d0582ce4a9.
Deshalb ist Lista87fdacec66f0909fc0757c19f2d2b1d list = new ArrayListf7e83be87db5cd2d9a8a0b8117b38cd4() falsch.
Wenn das Obige korrekt ist, dann:
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!