java的vector如何添加一个基元数组?

tf7tbtn2  于 2021-07-09  发布在  Java
关注(0)|答案(4)|浏览(553)

我使用的是Java1.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)

必须 Package 所有基本体,如下所示:

v.addElement(new Byte(b));

说到这里,我注意到这段代码编译和运行都很好:

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

v.addElement(b);

这怎么可能?我的java版本甚至没有集合,而且这个文档说这个方法没有重载,它只接受对象。
是不是所有的数组,甚至是基元数组,都扩展了object?

8zzbczxx

8zzbczxx1#

所有数组,包括基元类型的数组,都是 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
plicqrtu

plicqrtu2#

是不是所有的数组,甚至是基元数组,实际上都扩展了对象
对。

gzszwxb4

gzszwxb43#

正如您所猜测的,所有数组,甚至只包含基元的数组,都是 Object s。它们是引用类型,它简化了java,使每个引用类型都成为 Object .
从某种意义上说,数组无论包含什么类型,其行为都是相同的。“primitive”是类型的属性,而不是容器的属性。

1tu0hz3e

1tu0hz3e4#

对。 Array s是 Object s。
从§java语言规范4.3.1:
对象是类示例或数组。

相关问题