Java:“类型不匹配:无法从字节[]转换为字节[]”[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我在Java中遇到了这个奇怪的错误而且我完全卡住了。

private List<byte[]> sharedWorlds = Collections.synchronizedList(new ArrayList<byte[]>());

Byte[] y = sharedWorlds.toArray(new Byte[0]);

try{

    //this line won't compile!
    Utilities.writeByteArray(outStream, sharedWorlds.toArray(new Byte[0]));

}catch(Exception e){
    System.out.println("Error!");
}

类型不匹配:无法从字节[]转换为字节[]

“writeByteArray”的第二个参数需要是byte []而不是Byte [] ...

我可以遍历一个新的byte []并复制每个元素,但这看起来不干净且效率低下?

我试过铸造

(byte[]) sharedWorlds.toArray(new Byte[0])

但这个错误

无法从Byte []转换为byte []

我的Java生疏了,但我不知道这里发生了什么。

java arrays arraylist
1个回答
0
投票

从一些快速研究中可以看出,Java中不支持直接转换。

您可以使用Apache Commons Lang ArrayUtils.toPrimitive()http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/ArrayUtils.html#toPrimitive(java.lang.Integer[])

或者,您可以使用for循环将对象Byte数组复制到原始字节数组。

更多信息和示例Converting an array of objects to an array of their primitive types

© www.soinside.com 2019 - 2024. All rights reserved.