(cuidado, no confundir con array de longitud n. Si las dimensiones son 2 es una matriz, de 3 una matriz tridimensional, etc.)
Al principio parece imposible, pero se me ocurrió que si utilizo clases genéricas puedo hacer un array de una dimension más tal y como muestra el ssiguiente código:
Código
package test; public class ClaseGenerica<T> { ClaseGenerica<T[]> t; T u; Test2<?> u = new Test2<Integer>(); for(int i = 0; i < 10; i++){ u.t = new Test2<>(); u = u.t; } ClaseGenerica<Integer> t = new Test2<>(); t.t = new ClaseGenerica<>(); t.t.t = new ClaseGenerica<>(); t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t.t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t.t.t.t.t.t = new ClaseGenerica<>(); t.t.t.t.t.t.t.t.t.t.t = new ClaseGenerica<>(); //En total el array tiene 10 dimensiones, no se molesten en contarlos //Como pueden ver, no he necesitado declarar un array de N dimensiones, solo instanciarlo } }
Es un poco evidente que esto se puede hacer tambien con un bucle for y el operador '?' tal y como muestro a continuación, pero el problema viene después al querer instanciar ese array, que es lo que me gustaria a mi saber.
Código
¿Alguna idea de como solventar este problema? No es que tenga mucha utilidad práctica, pero es por curiosidad
package test; public class ClaseGenerica<T> { ClaseGenerica<T[]> t; T u; ClaseGenerica<?> t = new ClaseGenerica<Integer>(); for(int i = 0; i < 10; i++){ t.t = new ClaseGenerica<>(); t = t.t; } } }