【发布时间】:2013-05-07 07:05:08
【问题描述】:
当我想在方法返回的List 引用中转换ArrayList 对象时:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
asList 方法的返回类型是对ArrayList 对象的List 引用,这意味着我可以将它转换为ArrayList 引用。
这样:
String[] colors = { "black", "blue", "yellow" };
ArrayList<String> links = (ArrayList<String>) Arrays.asList(colors) ;
但是这段代码出现了运行时错误:
线程“主”java.lang.ClassCastException 中的异常: java.util.Arrays$ArrayList 不能转换为 java.util.ArrayList
为什么会这样?
【问题讨论】:
-
从 Arrays.asList 返回的 ArrayList 不是实际的数组列表,它只是一个包装器...不允许在列表中进行任何修改
-
你的“包装”是什么意思??
标签: java collections casting