据我了解,Object 也是 java 中的一个类。那么,我们怎么写
Object ob = new Integer[2];
并不是
Integer i = new Integer[2];
为什么单个引用ob
可以指向整数数组但类型的引用Integer
不能?
据我了解,Object 也是 java 中的一个类。那么,我们怎么写
Object ob = new Integer[2];
并不是
Integer i = new Integer[2];
为什么单个引用ob
可以指向整数数组但类型的引用Integer
不能?
因为每个数组都是一个对象。所以多态性规则告诉我们Integer[]
(array of Integer
) 可以存储在 an 中Object
,但显然Integer[]
(array of Integer
) 不能存储在 an 中Integer
。
在 Java 编程语言中,数组是对象(第 4.3.1 节),是动态创建的,并且可以分配给 Object 类型的变量(第 4.3.2 节)。Object 类的所有方法都可以在数组上调用。
数组的所有组件都具有相同的类型,称为数组的组件类型。如果数组的组件类型是 T,那么数组本身的类型写成 T[]。
因为每个数组都是Object
. 但是没有数组是Integer
.
由于下面的表达式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.