这个问题在这里已有答案:
我在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中不支持直接转换。
您可以使用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