铸造不是您正在寻找的解决方案。转换本质上允许您使用转换为特定类类型的方法。演员表示例:
(((ClassA)classB).method())
因此,可以将返回值放置在包含 method() 的实例化 classB 对象的 ClassA 对象内。
另一方面,您想要做的是创建一个多维数组或二维数组。这本质上是一个数组数组,其中arrayA[i] = arrayB[];
例如:
Object[] objectArray = new Object[5];
Object[][] = objectArray2D = new Object[][];
objectArray2D[i] = objectArray;
这里是你的问题的一点,如果你创建一个多维数组,为什么你只给它一个数组实例。本质上,您将在上面的示例中创建一个数组内的数组,并且由于您将只给它 1 个数组索引,因此数组内的所有对象的索引将与您拥有一个数组相同,但只有一个额外的安置。让我解释一下:
objectArray[0] == 你放在objectArray第一个槽的对象
而 objectArray2D[0][0] == 与 objectArray[0] 中的对象完全相同的对象
对一个数组使用多维数组并没有带来任何好处。如果您要向二维数组询问索引 [1][0],您将收到越界异常。
最后,我建议您创建一种特定形式的数组,例如 int[] 或 string[]。 Object[] 数组的问题在于,您可以将任何被认为是 Object 的内容存储到数组中,从而允许在一个数组中存在不同类型的对象的潜在集群。例如你可以有一个 objectArray[0] = int 1;和 objectArray[1] = 字符串一;除非您想非常具体地使用数组,否则最好使用一种 Object 类型作为数组。
无论如何,做你想做的事情的最终解决方案如下:
ArrayList<Object[]> array;
Object[][] data;
public void changeToAnArray(ArrayList<Object[]> array, Object[][] data)
{
this.array = array.toArray();
this.data[0] = array;
}
还要注意 ArrayList 的要点,本质上是一个二维数组,而不必解析索引。
请任何人随时纠正我在