据我所知,Object也是java中的一个类。那么,我们怎么写呢
Object ob = new Integer[2];
而不是
Integer i = new Integer[2];
单个引用ob
如何指向整数数组,但类型Integer
的引用不能?
答案 0 :(得分:5)
因为每个数组都是一个对象。因此,多态性规则告诉我们Integer[]
(Integer
数组)可以存储在Object
中,但显然Integer[]
(Integer
数组)不能存在存储在Integer
。
答案 1 :(得分:3)
因为每个数组都是Object
的子类型。但是没有数组是Integer
的子类型。
答案 2 :(得分:3)
在Java编程语言中,数组是对象(§4.3.1),是动态创建的,可以分配给Object (§4.3.2)类型的变量。可以在数组上调用Object类的所有方法。
数组的所有组件都具有相同的类型,称为数组的组件类型。 如果数组的组件类型为T,则数组本身的类型为T []。
答案 3 :(得分:1)
由于RHS
上的以下表达式会创建array object
: -
new Integer[2];
因此,LHS上的引用类型应该兼容,以便能够保存对数组的引用。
现在,由于Java中的array
是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.