如何在Object类的单个引用中存储数组对象?

时间:2012-11-11 15:12:47

标签: java

据我所知,Object也是java中的一个类。那么,我们怎么写呢

Object ob = new Integer[2];

而不是

Integer i = new Integer[2];

单个引用ob如何指向整数数组,但类型Integer的引用不能?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

因为每个数组都是Object的子类型。但是没有数组是Integer的子类型。

答案 2 :(得分:3)

来自JLS#Chapter 10. Arrays

  

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

     

数组的所有组件都具有相同的类型,称为数组的组件类型。 如果数组的组件类型为T,则数组本身的类型为T []。

答案 3 :(得分:1)

由于RHS上的以下表达式会创建array object: -

new Integer[2];

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

现在,由于Java中的arrayObject的子类型,因此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.