黑马程序员技术交流社区
标题:
关于泛型擦除
[打印本页]
作者:
Zrz_K
时间:
2015-12-24 16:07
标题:
关于泛型擦除
[size=13.6364px]查看下述两个方法:
[size=13.6364px]
public void show(ArrayList<String> list) {}
public void show(ArrayList<Integer> list){}
复制代码
上述两个方法是
不会形成方法的重载
的,会报方法已存在的错误。
泛型是
1.5中引入的
一个新的概念,由于不用进行强制转换类型了,所以具有较高的安全性和易用性。
因为
泛型其实只是在编译器中实现的而虚拟机并不认识泛型
,所以要在虚拟机中将泛型类型进行擦除。也就是说,在编译阶段使用泛型,运行阶段取消泛型,即擦除。
擦除是将泛型类型以其父类代替,如String变成了Object等。
其实在使用的时候还是进行带强制类型的转化,只不过这是比较安全的转换,因为在编译阶段已经确保了数据的一致性。
[size=13.6364px]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2