实际上可以在Java中完成。(我必须说我有些惊讶。)
免责声明;除了解决这个问题,我再也不想在其他任何地方看到此代码了。我强烈建议您使用
List。
import java.lang.reflect.Array;import java.util.*;public class Test { public static int[] tail(int[] arr) { return Arrays.copyOfRange(arr, 1, arr.length); } public static void setValue(Object array, String value, int... indecies) { if (indecies.length == 1) ((String[]) array)[indecies[0]] = value; else setValue(Array.get(array, indecies[0]), value, tail(indecies)); } public static void fillWithSomevalues(Object array, String v, int... sizes) { for (int i = 0; i < sizes[0]; i++) if (sizes.length == 1) ((String[]) array)[i] = v + i; else fillWithSomevalues(Array.get(array, i), v + i, tail(sizes)); } public static void main(String[] args) { // Randomly choose number of dimensions (1, 2 or 3) at runtime. Random r = new Random(); int dims = 1 + r.nextInt(3); // Randomly choose array lengths (1, 2 or 3) at runtime. int[] sizes = new int[dims]; for (int i = 0; i < sizes.length; i++) sizes[i] = 1 + r.nextInt(3); // Create array System.out.println("Creating array with dimensions / sizes: " + Arrays.toString(sizes).replaceAll(", ", "][")); Object multiDimArray = Array.newInstance(String.class, sizes); // Fill with some fillWithSomevalues(multiDimArray, "pos ", sizes); System.out.println(Arrays.deepToString((Object[]) multiDimArray)); }}示例输出:
Creating array with dimensions / sizes: [2][3][2][[[pos 000, pos 001], [pos 010, pos 011], [pos 020, pos 021]], [[pos 100, pos 101], [pos 110, pos 111], [pos 120, pos 121]]]



