- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 泛型程序设计 北京理工大学计算机学院 金旭亮 * 程序设计的风范 结构化 面向对象 泛型编程 函数式编程 为什么要引入泛型(1) JDK1.5 之前的Java没有泛型 ,因此,ArrayList等集合其元素类型为Object,这意味着可以向集合中加入任何一种类型的对象,这会带来问题。 Demo: ListErr.java 将一个“Integer”对象加入到字串集合中,运行时引发ClassCastException。 * 为什么要引入泛型(2) 使用泛型,可以限制集合能接收的对象类型,并且消除了类型转换的需要。 Demo: GenericList.java * * 泛型所带来的好处 1 减少类的数目 2 初步剖离数据结构与算法 3 提升程序运行效率 4 减少编码错误:可以在编译时检查类型 * 自动打包 ArrayListInteger list; list=new ArrayListInteger(); list.add(3); //相当于 //list.add(new Integer(3)); * 自动拆包 以下语句: int n=list.get(0) 将会被自动变换为: int n=list.get(0).intValue(); * 注意 尽量避免在大循环中出现打包与拆包现象。 尽可能明确地定义变量数据类型! * 定义自己的泛型类 public class PairT { public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; } public T getFirst() { return first; } public T getSecond() { return second; } public void setFirst(T newValue) { first = newValue; } public void setSecond(T newValue) { second = newValue; } private T first; private T second; } 使用泛型类定义泛型方法 class ArrayAlg { public static PairString minmax(String[] a) { if (a == null || a.length == 0) return null; String min = a[0]; String max = a[0]; for (int i = 1; i a.length; i++) { if (pareTo(a[i]) 0) min = a[i]; if (pareTo(a[i]) 0) max = a[i]; } return new PairString(min, max); } } * PairTest.java * * 定义泛型方法 Class ArrayAlg { Public static T T getMiddle(T[] a) { return a[a.length/2]; } } * 使用范型方法 String[] ns={“John”,”Q”,”public”}; String mid=ArrayAlgString.getMiddle(ns) * 类型变量的限定 public static T extends Comparable T min(T[] a) { … } 用于指定类型必须实现Comparable接口。 多个限定条件 T extends Comparable Serializable * 泛型限定实例 PairTest2.java * 范型类型与“原始”类型 Public class PairT { private T first; private T second; } Java会将上述的T转为Object,生成一个原始数据类型,以便在JVM上运行。——“擦除”原理 其原因是:Java虚拟机没有范型类型对象! * 翻译泛型表达式 PairEmployee buddies=…; Employee buddy=buddies.getFirst(); 在编译时,编译器将擦除Pair的范型定义,以Object代替Employee,并在第二
您可能关注的文档
最近下载
- 高等数学 全套教案.doc VIP
- 高等数学课件完整版.ppt VIP
- 2025年冲刺-副主任医师(副高)-肾内科学(副高)考试历年(2018-2024)真题荟萃带答案.docx
- 附件整车零部件防腐技术要求.pdf VIP
- (完整版)2019修订版《托儿所、幼儿园建筑设计规范》.pdf
- 13 2.0MW风力发电机组风场安装手册第四版定稿.pdf VIP
- 《万历十五年》读书分享.pptx VIP
- 2023-2024学年一年级语文上册期末乐考+非纸笔测试题(一)统编版.docx VIP
- 6m新型自行走剪叉式高空作业平台设计说明书.pdf VIP
- T∕CAMA 24-2020 农用内保温被.pdf VIP
原创力文档


文档评论(0)