泛型
泛型的提出是为了编写重用性更好的代码。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
引入泛型
Object
是所有类的父类,使用时可以添加不同类型的对象;当需要使用的时候,必须进行强制转换,但是这个强转很有可能出现转换异常。
Object实现通用、不同类型的处理,有这么两个缺点:
- 每次使用时都需要强制转换成想要的类型
- 在编译时编译器并不知道类型转换是否正常,运行时才知道,不安全
为了消除以上缺点,添加了可以数据类型参数化的类型--泛型
泛型以后,许多集合类都使用泛型来保存不同类型的元素
引入泛型的主要目标有以下几点:
a.类型安全
泛型的主要目标是提高 Java 程序的类型安全
编译时期就可以检查出因 Java 类型不正确导致的 ClassCastException 异常
符合越早出错代价越小原则
b.消除强制类型转换
泛型的一个附带好处是,使用时直接得到目标类型,消除许多强制类型转换
所得即所需,这使得代码更加可读,并且减少了出错机会
c.潜在的性能收益
由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改
所有工作都在编译器中完成
编译器生成的代码跟不使用泛型(和强制类型转换)时所写的代码几乎一致,只是更能确保类型安全而已