假设我有以下代码
E[] arrayVar = (E[])new Object[1];// It causes a compiler warning
问题是,在什么情况下代码会导致运行时错误,
最佳答案
如果您尝试将结果分配给化的E
类型,则该代码只会导致运行时错误:
createArray(); // no exception
String[] arr = createArray(); // causes ClassCastException
public static <E> E[] createArray() {
return (E[]) new Object[1];
}
创建通用数组的安全方法是使用
Array.newInstance
:public static <E> E[] createArray(Class<E> component) {
return (E[]) Array.newInstance(component, 1);
}
此方法不会导致
ClassCastException
。