如何在不知道其类型的情况下展开数组?
我有一个Object[],我知道它只包含Car例如实例.当我尝试将其类型转换为a时Car[],它会抛出ClassCastException.我在一个没有Generics的环境中工作.
我必须使用for循环手动将每个元素复制到一个新数组中,如下所示:
Car[] cars = new Car[objects.length];
for (int i = 0; i < objects.length; i++) {
cars[i] = (Car) objects[i];
}
Run Code Online (Sandbox Code Playgroud)
?
仅仅因为Object[]发生只包含Cars,并不意味着它可以被投射到Car[].您需要将数组的内容复制到新的Car[],必要时进行转换.
请记住,数组本身就是对象,它们的类型不受其中的内容支配 - 反之亦然.