2

假设我有以下代码:

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

设置然后获取消息是否涉及自动装箱?

4

3 回答 3

3

自动装箱仅在您将原始 ( byte) 值(或变量)分配给引用 ( Byte) 变量时发生。

将数组 ( byte[]) 分配给Object变量仅涉及强制转换。那将是静态或隐式转换。而相反的方式涉及显式(动态)转换。

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

于 2013-05-29T03:30:52.113 回答
2

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

即使是这样,数组也是一个对象,它是对您要转换的数组对象的引用,而不是其中的元素。

于 2013-05-29T03:29:40.840 回答
1

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

于 2013-05-29T03:29:53.290 回答