2016-09-06 4 views
3

Java nicht Array von Sammlungen erstellen lässt, zeigt Kompilierungsfehler cannot create a generic arrayErstellen Reihe von Sammlungen

ArrayList<String>[] list = new ArrayList<String>[2]; 

aber ich kann wie dieses

ArrayList<?>[] list = new ArrayList<?>[2]; 

generische Sammlung erstellen Warum gibt es keine Warnung Compiler ist in Der obige Fall

Antwort

1

In Java können Sie kein generisches Array erstellen. Ich denke, der Grund, warum dies nicht erlaubt ist, ist, weil Arrays sind, was bedeutet, dass die Typinformationen zur Laufzeit bekannt sind und von ihnen erzwungen werden. Die Typinformation aus Generika ist dagegen zur Laufzeit erased.

Aufgrund der obigen Ausführungen ist es erlaubt, etwas zu haben, wie diese T[] array = new E[size]; wobei E ein Subtyp von T. ist

Wenn Sie Generika Sie sind nicht erlaubt, so etwas zu tun: List<T> list = new ArrayList<E>(); wobei E ein Subtyp von T.

Der einzige zugelassene Typ-Parameter, der für Arrays zulässig ist, ist unbound wildcard ?, da dies bedeutet, dass jeder Typ akzeptiert wird.

Verwandte Themen