假设我有以下代码:
class Msg {
private Object msg;
public byte[] getMsg() {
return (byte[]) msg;
}
public void setMsg(byte[] msg) {
this.msg = msg;
}
}
设置然后获取消息是否涉及自动装箱?
假设我有以下代码:
class Msg {
private Object msg;
public byte[] getMsg() {
return (byte[]) msg;
}
public void setMsg(byte[] msg) {
this.msg = msg;
}
}
设置然后获取消息是否涉及自动装箱?
自动装箱仅在您将原始 ( byte
) 值(或变量)分配给引用 ( Byte
) 变量时发生。
将数组 ( byte[]
) 分配给Object
变量仅涉及强制转换。那将是静态或隐式转换。而相反的方式涉及显式(动态)转换。
对数组的每个元素进行装箱需要创建一个全新的数组(即Byte[]
)。在这种情况下,这不是正在发生的事情。您只选择了byte[]
仅使用类型变量来引用同一个数组 () Object
。
不,自动装箱在任何时候都不适用于数组。
即使是这样,数组也是一个对象,它是对您要转换的数组对象的引用,而不是其中的元素。
不,原始数组是一个对象。byte[] 和 Object 引用都指向同一个对象。