我试图理解有关数组的一些基础知识。我认为多维数组实际上只是数组的数组。考虑到这一点,我不理解以下行为:
Object [] object = {new Object[1]};
Object anotherObject = object[0][0]; //doesn't work
Object yetAnotherObject = object[0]; //does work
我很困惑为什么第二行不能编译("期望数组类型")。我想是因为"对象[0]"实际上是一个对象数组,我可以使用方括号来访问它的内容。
我错过了什么?
答案 0 :(得分:0)
object
的类型是Object[]
,它是一维数组。将数组元素存储在该数组中这一事实并不能使它成为一个二维数组。
Object anotherObject = object[0][0];
不起作用,因为编译器不知道object[0]
是一个数组(并且它不必 - object[0]
可以保存对任何数组的引用Object
)。
您需要进行投射以使其正常工作:
Object anotherObject = ((Object[])(object[0]))[0];