有没有办法改变数组的维数,即制作这个
int[][] i = new int[3][3];
但是像这样使用它
getArray(i); //where getArray only accepts one dimensional arrays
答案 0 :(得分:1)
您无法更改Java数组或数组类型中的维数。
但是你可以利用Java数组是一个对象...以及子类型...并声明一个getArray
方法这样的事实:
Object getArray(Object[], ...) { .... }
您可以在int[][]
实例上调用此方法,但需要运行时类型转换才能将结果转换为int[]
。
例如:
Object getArray(Object[] array, int i) { return array[i]; }
int[][] big = new int[3][3];
int[] slice = (int[]) getArray(big, 0);
另一方面,如果您真的在询问如何将多维数组展平变成一维数组,那么getArray
方法需要分配一个新数组,从原件填充并返回它。
请注意,您将返回一个与原始数组无关的全新数组。复制N x N .... x N阵列很昂贵。
答案 1 :(得分:0)
Java是静态类型语言。这意味着您无法在运行时更改变量的类型。但在这种特殊情况下,您只需使用以下调用:
getArray(i[2]); // put anything between 0 and (outerArrayLength-1) instead of 2 here