消息关闭
    暂无新消息!

泛型的擦除和补偿机制问题

问题作者 : Jewison2017-08-16发布

public class Genericity{
    public static void main(String[] args) {
        A<Integer> a = new A();
        Object o = a.show();    //没有报错,o得到一个字符串"123"
        Object o2 = a.show().toString();    //报错,在toString之前加载了ClassLoader.java中的loadClass(),抛出ClassCastException
    }
}

class A<E>{
    E show(){
        ArrayList arrayList = new ArrayList();
        arrayList.add("123");
        E o = (E)arrayList.get(0).toString();   //没有报错,强制转型也没有发生,o为字符串"123"
        System.out.println(o);
        return (E)arrayList.get(0);
    }
}

在这里,为什么只有Object o2 = a.show().toString();这里会报错,泛型擦除补偿机制的触发条件是什么

0个回答

暂无回答!