Rin*_*ing 1 java arrays vector
我正在使用Java 1.3,这意味着它没有原语的自动装箱.这意味着以下代码:
Vector v = new Vector();
byte b = (byte) 4;
v.addElement(b);
Run Code Online (Sandbox Code Playgroud)
不编译,编译错误:
The method addElement(Object) in the type Vector is not applicable for the arguments (byte)
Run Code Online (Sandbox Code Playgroud)
必须包装所有基元,如下所示:
v.addElement(new Byte(b));
Run Code Online (Sandbox Code Playgroud)
话虽如此,我注意到这段代码编译并运行得很好:
Vector v = new Vector();
byte[] b = new byte[]{1, 2};
v.addElement(b);
Run Code Online (Sandbox Code Playgroud)
怎么可能?我的java版本甚至没有集合,本文档说该方法没有重载,只需要对象.
是否所有数组,甚至是基元数组实际上都扩展了Object?
正如您猜测的那样,所有数组,即使只包含基元的数组,都是Objects.它们是引用类型,它简化了Java以使每个引用类型成为一种类型Object.
从某种意义上说,无论数组包含什么类型,数组的行为都相同."原始"是该类型的属性,而不是容器的属性.