泛型的擦除和补偿机制问题
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();这里会报错,泛型擦除补偿机制的触发条件是什么
...全文
相关推荐
Java泛型简明教程借鉴.pdf
为了补偿类型擦除带来的信息丢失,引入了类型通配符和类型边界等机制。### 类型边界类型边界用于给泛型参数设置上下界,确保泛型类型必须是某个类的子类或实现某个接口。边界用`extends`关键字表示。
2019Java高级面试专题
泛型:了解泛型的基本概念、类型擦除、通配符以及如何编写泛型方法和类。4. 设计模式:熟悉23种设计模式,能灵活运用到实际项目中,如单例模式、工厂模式、装饰器模式等。5.
Java泛型类型擦除后的补偿
本文将深入探讨Java泛型类型擦除的概念,并介绍在类型擦除后,为了保持泛型的安全性和便利性,Java设计者所采取的一些补偿机制。1.
java面试——上海-携程-Java高级.zip
- 泛型:理解泛型的边界、通配符以及类型擦除。 - CopyOnWriteArrayList与ConcurrentHashMap在并发场景下的应用。
JAVA面 试 题 目 总结文档
- 泛型:理解泛型的限制,通配符和类型擦除的概念。 - Stream API:学习流的创建、操作和收集,以及并行流的使用。4.


