是否将Java中的原始数组转换为Object并返回涉及装箱?

时间:2013-05-29 03:25:40

标签: java primitive-types boxing

假设我有以下代码:

class Msg {
    private Object msg;
    public byte[] getMsg() {
        return (byte[]) msg;
    }
    public void setMsg(byte[] msg) {
        this.msg = msg;
    }
}

设置然后收到消息是否涉及自动装箱?

3 个答案:

答案 0 :(得分:3)

仅当您将基元(byte)值(或变量)分配给引用(Byte)变量时,才会发生自动装箱。

将数组(byte[])分配给Object变量只涉及强制转换。这将是一个静态或隐式的铸造。而另一种方式涉及明确(动态)铸造。

装箱阵列的每个元素都需要创建一个全新的数组(即Byte[])。在这种情况下,这不是正在发生的事情。您只是选择使用byte[]类型的变量来引用同一个数组(Object)。

答案 1 :(得分:2)

没有。自动装箱在任何时候都不适用于数组。

即使它确实如此,数组也是一个对象,它是对你正在投射的数组对象的引用,而不是其中的元素。

答案 2 :(得分:1)

没有。原始数组对象。 byte []和Object引用都指向同一个对象。