在 Java 中,基元类型和引用类型是两个不同的世界。这反映了数组:基元数组不是对象数组,这就是您无法强制转换的原因。
以下是问题中解决方案的更简单版本:
private Object[] getArray(Object val){
if (val instanceof Object[])
return (Object[])val;
int arrlength = Array.getLength(val);
Object[] outputArray = new Object[arrlength];
for(int i = 0; i < arrlength; ++i){
outputArray[i] = Array.get(val, i);
}
return outputArray;
}
当他们有时决定向 VM 添加新的基元类型时,这仍然有效。
当然,您可能希望始终进行复制,不仅在原始情况下,然后它变得更加简单:
private Object[] getArray(Object val){
int arrlength = Array.getLength(val);
Object[] outputArray = new Object[arrlength];
for(int i = 0; i < arrlength; ++i){
outputArray[i] = Array.get(val, i);
}
return outputArray;
}
当然,这不是铸造,而是转换。