![](/img/trans.png)
[英]java Array.newInstance throws ClassCastException, why?
[英]What is the difference between Array.newInstance and direct initialization?
我在做一个重构时遇到过这种情况所以我想知道它们之间是否存在任何差异?
例如:
import java.util.List;
import java.lang.reflect.Array;
public Object[] toArray(List<Foo> foos) {
Object array = Array.newInstance(Foo.class, foos.size())
int i = 0;
for(Foo foo : foos) {
Array.set(array, i, foo.getSomeProperty);
i++;
}
return (Object[]) array;
}
至于另一方面
import java.util.List;
public Object[] toArray(List<Foo> foos) {
Object[] array = new Object[foos.size()];
int i = 0;
for(Foo foo : foos) {
array[i] = foo.getSomeProperty;
i++;
}
return array;
}
它们之间有什么实际区别吗? 我的问题既适用于初始化部分,也适用于设置值1
运行测试时,结果总是相同的
使用Arrays.newInstance
您可以创建一个在声明时不知道的类型的泛型数组。 通过这样做,你可以避免讨厌的Object[]
声明,这对于类型安全至关重要。
对于你的例子,我也可以写
array[i]=new Bar();
在这里看到这篇文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.