多维对象数组行为

时间:2018-04-20 07:14:28

标签: java arrays object

我试图理解有关数组的一些基础知识。我认为多维数组实际上只是数组的数组。考虑到这一点,我不理解以下行为:

Object [] object = {new Object[1]};
Object anotherObject = object[0][0]; //doesn't work
Object yetAnotherObject = object[0]; //does work

我很困惑为什么第二行不能编译("期望数组类型")。我想是因为"对象[0]"实际上是一个对象数组,我可以使用方括号来访问它的内容。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

object的类型是Object[],它是一维数组。将数组元素存储在该数组中这一事实并不能使它成为一个二维数组。

Object anotherObject = object[0][0];

不起作用,因为编译器不知道object[0]是一个数组(并且它不必 - object[0]可以保存对任何数组的引用Object)。

您需要进行投射以使其正常工作:

Object anotherObject = ((Object[])(object[0]))[0];