1.泛型出现背景
方法的参数类型是一个基类,则基类的所有子类都可以作为该方法的参数--->拘泥于类的单继承
方法的参数类型是一个接口,则任何实现了该接口的类都可以作为该方法的参数--->接口的多实现
方法的参数类型是某种不确定的类型,则任何类型都可以作为该方法的参数--->泛型:参数化类型
2.泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且有编译器来确定类型的正确性
3.泛型可表示任意类型及几种任意类型间的关系
例如:TwoTuple<A,B,C>,代码中用单个大写英文字母表示一个任意类型,用另一个单个大写字母表示另一个任意类型
4.泛型类,泛型接口
接口使用泛型和类使用泛型没什么区别
5.泛型方法
使得该方法能够独立于类而产生变化
6.泛型的擦除
当你使用泛型时,任意具体的类型信息都被擦除了,你唯一知道的就是你在使用一个对象
因此,List<String>,List<Integer>在运行时事实上是相同的类型,这俩种形式都被擦除成它们的原生类型
7.
任意基本类型都不能作为类型参数,例如:ArrayList<int>是错误的
一个类不能实现同一个泛型接口的俩种变体,因为由于擦除的原因,这俩个变体会成为相同的接口
8.类单继承-->接口多实现-->泛型-->泛型接口(最灵活)