关于JAVA不支持泛型数组的一点疑惑

关于JAVA不支持泛型数组的一点疑惑

请先看这篇博文:
http://www.blogjava.net/deepnighttwo/articles/298426.html

文章里说,如果允许了泛型数组,那么编译器添加的强制类型转换的代码就会有可能是错误的。但是即便只是普通的拥有泛型的对象,在运行时也是会有错误的,附如下代码:
public   class  Test < T >   {
    T t;
    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        Test<String> list = new Test<String>();
        list.setT(
"123");
        Object o 
= list;
        Test
<StringBuffer> list2 = (Test<StringBuffer>)o;
        System.out.println(list2.getT().append(
"44"));
    }

    
public T getT() {
        
return t;
    }

    
public void setT(T t) {
        
this.t = t;
    }

}

运行时,会有java.lang.ClassCastException.

于是,我有了疑惑,即便不是泛型数组也会有这样类似的错误,那么,不允许使用泛型数组的意义何在?


你可能感兴趣的:(关于JAVA不支持泛型数组的一点疑惑)