JDK5中引入的特性,用E、T、K、V来代替具体类型。
可以使得类型或方法更加适配。
也可以统一传入的数据类型。
编译期间将类型确定,避免了强制类型转换可能出现的异常。
泛型类
public class MyList<T> { }
泛型接口
public interface Data<E>{}
当具体子类指定了具体类型时,要实现的抽象方法如果带泛型,也就随之确定了。
泛型方法
public <T> void run(T t) { }
泛型的上下限
光一个?表示任意类型都可以传入。
? extends Car: ?必须是Car或者其子类 也叫泛型上限
? super Car : ?必须是Car或者其父类 也叫泛型下限