Same as How to create a shared array in Java? but expanded to 2D:
import java.lang.reflect.Array; public class Example <T> { 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>(Integer.class).arrayExample(); } }
Note after reading the JAB comment above: To expand to a larger size, just add [] and measurement parameters in newInstance () (cls is a class, d1 to d5 are integers):
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);
See Array.newInstance() more details.
source share