Erstellen eines generischen zweidimensionalen Arrays mit dem classnobjekt

Ich habe einen generischen Typ mit dem Objekt Class im Konstruktor. Ich möchte in diesem Konstruktor ein zweidimensionales Array T[][] erstellen, ist das aber möglich?

Dasselbe wie Wie erstelle ich ein generisches Array in Java? aber erweitert auf 2D:

 import java.lang.reflect.Array; public class Example  { private final Class< ? extends T> cls; public Example (Class< ? extends T> cls) { this.cls = cls; } public void arrayExample () { // a [10][20] array @SuppressWarnings("unchecked") T[][] array = (T[][])Array.newInstance(cls, 10, 20); System.out.println(array.length + " " + array[0].length + " " + array.getClass()); } public static final void main (String[] args) { new Example(Integer.class).arrayExample(); } } 

Hinweis nach dem Lesen des JAB-Kommentars oben: Um auf weitere Dimensionen zu erweitern, fügen Sie einfach [] ‘s und Dimensionsparameter zu newInstance () hinzu (cls ist eine class, d1 bis d5 sind ganze Zahlen):

 T[] array = (T[])Array.newInstance(cls, d1); T[][] array = (T[][])Array.newInstance(cls, d1, d2); T[][][] array = (T[][][])Array.newInstance(cls, d1, d2, d3); T[][][][] array = (T[][][][])Array.newInstance(cls, d1, d2, d3, d4); T[][][][][] array = (T[][][][][])Array.newInstance(cls, d1, d2, d3, d4, d5); 

Weitere Array.newInstance() Sie unter Array.newInstance() .

Sie müssen Reflektion verwenden, aber es ist möglich: http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Array.html#newInstance%28java.lang.Class,%20int .. .% 29

Erstellt ein neues Array mit dem angegebenen Komponententyp und den angegebenen Dimensionen.