【问题标题】:No class cast exception when I use generics [duplicate]当我使用泛型时没有类转换异常[重复]
【发布时间】: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;     
}

为什么使用泛型会有所不同?

【问题讨论】:

标签: java generics casting


【解决方案1】:

因为type erasure。在运行时,V[] 只是 Object[]

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 2017-09-22
    • 2013-09-14
    • 1970-01-01
    相关资源
    最近更新 更多