java强制转换错误:[Ljava.lang.Byte;与[B]不兼容

java强制转换错误:[Ljava.lang.Byte;与[B]不兼容,java,casting,Java,Casting,我遇到了starnge java cast错误 当我将某个对象强制转换为字节[]时 byte [] a = new byte[lenght]; a = (byte[])obj;//obj is actually a byte array with the same number of elements 我遇到了以下错误 [Ljava.lang.Byte; incompatible with [B 这是什么原因? 提前感谢您的见解。您正在尝试将字节[]转换为字节[]。在Java中不能这样做 你

我遇到了starnge java cast错误

当我将某个对象强制转换为字节[]时

byte [] a = new byte[lenght];
a = (byte[])obj;//obj is actually a byte array with the same number of elements
我遇到了以下错误

[Ljava.lang.Byte; incompatible with [B
这是什么原因?
提前感谢您的见解。

您正在尝试将
字节[]
转换为
字节[]
。在Java中不能这样做

你有两个选择:

  • 更改
    obj
    中提供的
    Byte[]
    以创建
    Byte[]

  • 字节[]
    转换为
    字节[]
    。例如:

    Byte[] tmp (Byte[]) obj;
    byte[] a = new byte[obj.length];
    for (int i = 0; i < a.length; i++) {
        a[i] = tmp[i];
    }
    
    Byte[]tmp(Byte[])obj;
    字节[]a=新字节[obj.length];
    for(int i=0;i

您正试图将
字节[]
强制转换为
字节[]
。在Java中不能这样做

你有两个选择:

  • 更改
    obj
    中提供的
    Byte[]
    以创建
    Byte[]

  • 字节[]
    转换为
    字节[]
    。例如:

    Byte[] tmp (Byte[]) obj;
    byte[] a = new byte[obj.length];
    for (int i = 0; i < a.length; i++) {
        a[i] = tmp[i];
    }
    
    Byte[]tmp(Byte[])obj;
    字节[]a=新字节[obj.length];
    for(int i=0;i

“Byte”是一个可以包含“Byte”的对象类。“Byte”是一个“标量”值,而不是对象类。我猜“obj”声明为“Byte[]”,而不是“Byte[]”。
Byte
Byte
可以装箱/拆箱,但这两种类型的数组都不能相互转换。
Byte[]!=Byte[]
“Byte”是一个可以包含“byte”的对象类。“byte”是一个“标量”值,而不是对象类。我猜“obj”被声明为“byte[]”,而不是“byte[]”。
byte
byte
可以装箱/取消装箱,但这两种类型的数组都不能相互转换。
byte[!=byte[]
。谢谢。对象的类型是什么?我的意思是什么时候确定对象的类型?我在其他地方使用过同一个对象,但它根本没有类型(这里,它的类型似乎是Byte[])。对象的类型是在创建时确定的,它从不更改。我重复它,它从不更改。如果您有
Byte[]
然后它被创建为一个
字节[]
。谢谢。对象的类型是什么?我的意思是什么时候确定对象的类型?我在其他地方使用过相同的对象,但它根本没有类型(这里,它的类型似乎是字节[])。对象的类型是在创建时确定的,它从不更改。我重复一遍,它从不更改。如果您有
字节[]
,则它是作为
字节[]
创建的。