———————————————————————————
泛型
1.泛型是什么,使用泛型的好处
泛型就是把类型参数化,在编译的时候才确定具体的参数。
比如在 jdk1.5之前没有泛型的时候,我们使用ArrayList集合,存了一个String类型的字符串,又存了一个Integer类型的数字,取出的时候都要强转一下。但是jdk1.5有了泛型以后:
①:确保了我们的类型安全,类编译的时候。会进行泛型检查,如果一个集合被声明为String 类型,那么它往该集合存取数据的时候就会
对数据进行判断,从而避免存入或取出错误的数据。在编译的时候就可以检查出来因为类型不正确导致的异常(ClassCastException)
②:泛型只存在于编译阶段,而不存在于运行阶段,在编译后的 class文件中跟不使用泛型时写的代码几乎一致,因为在编译器编译的时候会通过类型擦除,去掉类型参数。
2.泛型中的限定通配符和非限定通配符
限定通配符对类型进行了限制,有两种限定通配符,一种是<? extends T>它通过确保类型必须是T的子类来设定类型的上限;
另一种是<? super T>它通过确保类型必须是T的父类来设定类型的下界。泛型类型必须用限定内的类型来进行初始化,否则会导致编译错误。
3.泛型擦除
首先泛型是jdk5之后加入的特性,泛型的内部是通过擦除来实现的。比如说我们在list集合里放入一个Integer类型的数据&