Java的Vector如何添加原始数组?

时间:2012-08-25 20:40:01

标签: java arrays vector

我正在使用Java 1.3,这意味着它没有原语的自动装箱。这意味着以下代码:

Vector v = new Vector();
byte b = (byte) 4;

v.addElement(b);

不编译,编译错误:

The method addElement(Object) in the type Vector is not applicable for the arguments (byte)

必须包装所有基元,如下所示:

v.addElement(new Byte(b));

话虽如此,我注意到这段代码编译并运行得很好:

Vector v = new Vector();
byte[] b = new byte[]{1, 2};

v.addElement(b);

怎么可能?我的java版本甚至没有集合,this documentation表示该方法没有重载,只需要对象。

是否所有数组,甚至基元数组实际上都扩展了对象?

4 个答案:

答案 0 :(得分:9)

正如您所猜测的那样,所有数组,即使只包含基元的数组,都是Object个。它们是引用类型,它简化了Java,使每个引用类型都为Object

从某种意义上说,无论数组包含哪种类型,数组的行为都相同。 “原始”是该类型的属性,而不是容器的属性。

答案 1 :(得分:2)

Al数组(包括基本类型数组)是Objects

int intArray[] = new int[5];

if (intArray instanceof Object)
    System.out.println("array is Object");
else System.out.println("array not Object");

输出:

array is Object

答案 2 :(得分:2)

是。 ArrayObject s。

来自Java语言规范的§4.3.1

  

对象是类实例或数组。

答案 3 :(得分:1)

  

是否所有数组,甚至基元数组实际上都扩展了Object