Java - 将数组分配给对象引用

时间:2015-08-16 18:07:14

标签: java arrays object

为什么我可以将数组分配给对象引用

Object x = (Object) new int[] { 1, 2, 3 };// no error
Object y = new int[] { 1, 2, 3 };//no error

java数组是否从类继承类似于?

我希望这会给我一个编译时错误。

这样做:

System.out.println(x.toString() + " " + x.getClass().getName() + " " + x.getClass().getTypeName());

结果:

[I@15db9742 [I int[]

3 个答案:

答案 0 :(得分:4)

根据official tutorial

  

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

答案 1 :(得分:2)

  

java数组是否从类继承类似于?

是的,因为数组是类的实例,就像其他对象一样。这就是为什么他们有hashCodetoString以及getClass,他们会从Object继承它们。

来自JLS§10.1

  

数组类型的超类型关系与超类关系不同。根据§4.10.3,Integer[]的直接超类型为Number[],但根据Integer[] Object对象,Class的直接超类为Integer[] 1}}(§10.8)。这在实践中无关紧要,因为Object也是所有数组类型的超类型

(我的重点)

并且(或许相关)来自JLS§10.2

  

数组类型的变量包含对象的引用。

答案 2 :(得分:0)

所有数组(原始数组或对象数组)都是对象。