首页 > 编程语言 > 详细

java基础---泛型

时间:2018-08-02 21:52:34      阅读:183      评论:0      收藏:0      [点我收藏+]
泛型设计的初衷就是为了减少手动的类型转换工作

===为什么需要泛型?没有泛型之前通用程序是如何设计的呢?
泛型的目的就是减少强制类型转换出现的错误。
如果没有泛型,比如一个集合就存法了两种元素Integer整数类型和字符串类型String类型。因为所有对象都是Object类的子类,这个时候你取出一个元素,你以为他是整数类型你强制类型转换,但是他是字符串类型这个时候就会抛异常ClassCast类型转换异常。而且这种异常是运行时异常还不是编译时异常,所以是我们不愿意看到的。
所以引入泛型,由编译器在编译时期进行强制类型转换,避免我们手动类型转换可能出现的错误,比如刚刚的集合如果泛型是整数类型,添加string类型的话编译的时候就会出错。
 
 
 
===泛型是什么时候开始工作的?解释一下java泛型擦除
编译的时候进行工作,编译的时候看到类型参数进行泛型擦除,插入强制类型转换的指令。
定义两个ArrayList<String>和ArrayList<Integer>类型的集合arrayString和arrayInteger,当比较两个集合的类型的时候会发现类型是一样的。
arrayString.getClass()==arrayInteger.getClass()
在编译期的时候会发生类型擦除,都会变成ArrayList类型。原始类型就是在类型擦除之后在字节码中真正的类型。
 
 
 

java基础---泛型

原文:https://www.cnblogs.com/buptyuhanwen/p/9409673.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!