Java中的可变维度数组?

switch (dimensions) { case 1: double[] array = new double[10]; break; case 2: double[][] array = new double[10][]; break; case 3: double[][][] array = new double[10][][]; break; case 4: double[][][][] array = new double[10][][][]; break; case 5: double[][][][][] array = new double[10][][][][]; break; case 6: double[][][][][][] array = new double[10][][][][][]; break; default: System.out.println("Sorry, too many dimensions"); break; } 

有没有办法以更好的方式完成上述工作? 我希望它能够创建任意数量的数组,也…

我只会使用平面1维数组和基于维度i和j的索引。

如前所述,您无法真正使用这样的数组,因为每个维度需要不同的代码。

但是,使用reflection创建这样的数组是可行的:

  import java.lang.reflect.Array; private Class arrayClass(Class compClass, int dimensions) { if(dimensions == 0) { return compClass; } int[] dims = new int[dimensions]; Object dummy = Array.newInstance(compClass, dims); return dummy.getClass(); } public Object makeArray(int dimensions) { Class compType = arrayClass(double.class, dimensions-1); return Array.newInstance(compType, 10); } 

然后,您必须使用reflection来访问您的数组,或将其强制转换为Object [](适用于所有维度> 1),然后仅操作第一级。 或者将其提供给需要正确类型数组的方法。