2

据我了解,Object 也是 java 中的一个类。那么,我们怎么写

Object ob = new Integer[2];

并不是

Integer i = new Integer[2];

为什么单个引用ob可以指向整数数组但类型的引用Integer不能?

4

4 回答 4

5

因为每个数组都是一个对象。所以多态性规则告诉我们Integer[](array of Integer) 可以存储在 an 中Object,但显然Integer[](array of Integer) 不能存储在 an 中Integer

于 2012-11-11T15:15:14.040 回答
3

JLS#Chapter 10. Arrays

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

数组的所有组件都具有相同的类型,称为数组的组件类型。如果数组的组件类型是 T,那么数组本身的类型写成 T[]。

于 2012-11-11T15:20:29.067 回答
3

因为每个数组都是Object. 但是没有数组是Integer.

于 2012-11-11T15:16:38.460 回答
1

由于下面的表达式RHS创建了一个array object: -

new Integer[2];

因此,您在 LHS 上的引用类型应该兼容,以便能够保存对数组的引用。

现在,由于array在 Java 中是 的子类型Object,所以Object类型可以包含对数组的引用。但是,Integer引用当然不能指向array.

所以,

Object ob = new Integer[2]; // is valid. as `Object` type reference can point to an array object
Integer i = new Integer[2]; // is not valid. as `Integer` type reference cannot point to an array object.
于 2012-11-11T15:14:18.747 回答