Java中的多维数组扩展了哪个类?

sky*_*ar7 7 java arrays multidimensional-array

我需要知道Java中的哪个类多维数组完全延伸?

当我们分配

Object[] ref=new int[]{1,2,3};
Run Code Online (Sandbox Code Playgroud)

编译器抱怨对象是不同类型的.所以似乎一维数组扩展Object; 我已经知道了.

但是当我们分配时

Object[] ref2=new int[][]{{1,2,3},{4,5,6}};
Run Code Online (Sandbox Code Playgroud)

编译器不会抱怨.所以似乎二维数组扩展Object[].

但是当我打印它的超类名称时:

System.out.println(ref2.getClass().getSuperclass().getName());
Run Code Online (Sandbox Code Playgroud)

我有java.lang.Object.

所以有人能解释这里发生了什么吗?

Thi*_*ilo 13

Java中的多维数组实际上只是一个数组(数组)*的数组.

此外,数组被视为Object的子类.

所以,你int[][]是一个Object[](有组件类型int[]),还有一个Object(因为所有数组都是对象)

int[]但不是Object[](但它仍然是一个Object).

所以似乎二维数组扩展了Object []

我不确定"extend"是否适用于此.数组在Java类型系统中有一个特殊的位置,与其他对象的工作方式略有不同.二维数组肯定是Object [].但是如果你问的是超类,那么任何一种数组都有的唯一超类就是Object.所有数组都是Cloneable和Serializable.