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 に答える
1

いいえ。プリミティブ配列オブジェクトです。byte[] 参照と Object 参照の両方が同じオブジェクトを指しています。

于 2013-05-29T03:29:53.290 に答える