深入学习Java泛型.ppt

深入学习Java泛型.ppt

ID:56296496

大小:1.97 MB

页数:67页

时间:2020-06-10

深入学习Java泛型.ppt_第1页
深入学习Java泛型.ppt_第2页
深入学习Java泛型.ppt_第3页
深入学习Java泛型.ppt_第4页
深入学习Java泛型.ppt_第5页
资源描述:

《深入学习Java泛型.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、泛型泛型入门深入泛型类型通配符泛型方法擦除与转换泛型与数组本章小结本章要点:本章的知识是Java集合的补充阅读,因为JDK1.5增加泛型支持在很大程度上都是为了让集合能记住其元素的数据类型。在没有泛型之前,一旦把一个对象“丢进”Java集合中,集合就会忘记对象的类型,把所有的对象当做Object类型处理。当程序从集合中取走对象后,就需要进行强制类型转换,这种强制类型转换不仅是代码臃肿,而且容易引起ClassCastException一场。增加泛型支持后的集合,完全可以记住集合中的元素的类型,并可以在编译时检查集合中元素的类型,如果

2、试图向集合中添加不满足类型要求的对象,编译器就会提示错误。增加泛型后的集合,可以让代码更加简洁,程序更加健壮(Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常)。Java集合有一个缺点-把一个对象“丢进”集合里之后,集合就会忘记这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了Object类型。(其运行时类型没变)。Java集合之所以被设计成这样,是因为集合的设计者不知道我们会用集合来保存什么类型的对象,所以他们把集合设计成能保存任何类型的对象,只要求具有很好

3、的通用性。但这样做带来如下两个问题:集合对元素类型没有任何限制,这样可以引发一些问题。由于把对象“丢进”集合时,集合丢失了对象的状态信息,集合只知道它盛装的是Object,因此取出集合元素后通常还需要进行强制类型转换。这种强制类型转换即增加了编程的复杂度,也可能引发ClassCastException异常。第一节泛型入门第一节泛型入门第一节泛型入门第一节泛型入门没有泛型的时候我们需要一个箱子,可以放入一个对象,也可以取出对象。publicclassBox{privateObjectobject;publicObjectgetObj

4、ect(){returnobject;}publicvoidsetObject(Objectobject){this.object=object;}}在使用中,每次取出的东西都必须强制类型转换,不但麻烦,而且容易出现类型转换异常。Boxbox1=newBox();box1.setObject("hello");Strings=(String)box1.getObject();Boxbox2=newBox();box2.setObject(Integer.valueOf(123));//中间经过一些处理//取出时必须强制类型转换In

5、tegeritg=(Integer)box2.getObject();//编译器无法判断这是个错误的类型转换StringerrorStr=(String)box2.getObject();Exceptioninthread"main"java.lang.ClassCastException:java.lang.Integercannotbecasttojava.lang.StringatBox.main(Box.java:22)Java5.0中引入了泛型,在实例化箱子的时候可以“贴上标签”,规定箱子必须放入对象的类型、取出的对象类

6、型,这样就无需强制类型转换了。Boxbox1=newBox();box1.setObject("hello");Boxbox2=newBox();box2.setObject(Integer.valueOf(123));//中间经过一些处理//取出时必须强制类型转换Integeritg=(Integer)box2.getObject();//编译器无法判断这是个错误的类型转换StringerrorStr=(String)box2.getObject();publicclassBox{privateTt;publicTgetO

7、bject(){returnt;}publicvoidsetObject(Tt){this.t=t;}}1.编译时不检查类型的异常在输出5的长度时,程序试图将Integer对象转换为String类型引发ClassCastException异常。从Java5之后,Java引入了“参数化类型”的概念,允许程序在创建集合时指定集合元素的类型。Java的参数化类型被称为泛型(Generic)。2.使用泛型上面程序成功创建了一个特殊的List集合:strList,这个List集合只能保存字符串对象,不能保存其他类型的对象。创建这种特殊集合的

8、方法是:在集合接口、类后增加尖括号,尖括号里放一个数据类型,即表明这个集合接口、集合类只能保存特定类型的对象。注意List后面的类型声明,它指定strList不是一个任意的List,而是一个String类型的list,写作:List

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。