0

据我所知,Object 是 java 中所有类中最超级的类。但是,下面的代码我无法理解。请帮帮我。

Object c = new long[4];
Object d = new int[4];
4

4 回答 4

7

在 Java 编程语言中,数组是对象(第 4.3.1 节),是动态创建的,并且可以分配给 Object 类型的变量(第 4.3.2 节)。Object 类的所有方法都可以在数组上调用

来自Java 语言规范

于 2013-06-30T19:29:33.403 回答
4

如所写,这应该会给您一个错误,因为您正在重新声明一个名为 c 的变量。但是,以下内容是完全有效的:

Object c = new long[4];
c = new int[4];

正如您所说,这是因为 Object 是 Java 中所有非原始类型的超类。

于 2013-06-30T19:28:19.423 回答
2

它可以编译是因为 Java 中的每个数组也是一个对象。

于 2013-06-30T19:27:50.937 回答
0

ObjectarraysJava 中的超类(仅提及数组,因为问题需要如此)。

因此,当您将长数组分配给对象时,它会在内部类型转换为 Object。

对于 int 也是如此。所以最后在这两个语句中,右边的变量是一个对象。但是,您不能同时拥有Object c =两条线。

于 2013-06-30T19:31:32.417 回答