【发布时间】:2015-10-20 19:20:42
【问题描述】:
这个程序...
public static void main(String[] args) {
String[] table = (String[]) new Object[20];
table[1] = "bla";
}
... 生成强制转换异常:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at tests.App.main(App.java:10)
但是,使用泛型完成的相同操作不会产生任何错误:
public static void main(String[] args) {
doIt("bla");
}
public static <V>void doIt(V val) {
V[] table = (V[]) new Object[20];
table[1] = val;
}
为什么使用泛型会有所不同?
【问题讨论】:
-
也许它正在将类型
Object分配给V