假设我有以下代码:
class Msg {
private Object msg;
public byte[] getMsg() {
return (byte[]) msg;
}
public void setMsg(byte[] msg) {
this.msg = msg;
}
}
设置然后收到消息是否涉及自动装箱?
答案 0 :(得分:3)
仅当您将基元(byte
)值(或变量)分配给引用(Byte
)变量时,才会发生自动装箱。
将数组(byte[]
)分配给Object
变量只涉及强制转换。这将是一个静态或隐式的铸造。而另一种方式涉及明确(动态)铸造。
装箱阵列的每个元素都需要创建一个全新的数组(即Byte[]
)。在这种情况下,这不是正在发生的事情。您只是选择使用byte[]
类型的变量来引用同一个数组(Object
)。
答案 1 :(得分:2)
没有。自动装箱在任何时候都不适用于数组。
即使它确实如此,数组也是一个对象,它是对你正在投射的数组对象的引用,而不是其中的元素。
答案 2 :(得分:1)
没有。原始数组是对象。 byte []和Object引用都指向同一个对象。