这个程序......
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;
}
为什么使用泛型会有所不同?