读:《多角度看java中的泛型》
这篇文章有这么几个关键词
- 关泛化方法(generic method )
- 受限类型参数(bounded type parameter)
- 桥方法(bridge method)
- 擦除(erasure)
- GJ(Generic Java)
- 参数多态(parametric polymorphism)
- 参数化类型(parameterized type)
- 泛型中的子类型
首先回顾泛型的子类型指的是:
List<String> ls = new ArrayList<String>();
List<Object> lo = ls; // error
List<Object> lo = ls; // error
String 是Object的子类。但是ls 和lo 一点关系都没有
再回顾下擦除:
擦出就是泛型的类编译器会把泛型擦除掉,用受限制类型参数替换掉。(默认的是Object)
<A extends AClaz>
<A implements AInterface>
<A>
<A implements AInterface>
<A>
再再在回顾下桥方法。
泛型化方法在擦除掉之后,还会再添加一个桥方法用来转化实现override。(我看泛型的本质就是通过编译器自己把强制转换做了)
再再再回顾下泛型的好处。
把 运行时的错误 前置到编译时