次のコードがあるとします。
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 参照の両方が同じオブジェクトを指しています。