[计算机软件及应用]chapter7_jaa泛型.pptVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]chapter7_jaa泛型

第七章:泛型 泛型精讲 本章主要内容 泛型方法 重载泛型方法 泛型类 通配符的使用 泛型—java新特性 Java泛型是jdk1.5中增加的新特性。 泛型机制的增加,改变了JDK的核心API的许多类和方法。 泛型 泛型本质上讲是指参数化类型。 参数化类型允许创建这样一些类、接口或方法,其所操作的数据类型被指定为一个参数。 即类、接口、方法中所使用的变量类型由一些参数所指定。 我们把这样的参数叫做类型参数。 类型参数 类型参数体现了参数化类型概念。 这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 泛型的优势 泛型机制提供了安全的编程环境,使程序员不必再为变量的类型安全考虑过多的东西。 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。 泛型方法 程序示例: 输出数组元素的内容,其中数组可以是Integer数组、Double数组、Character数组。 在出现泛型方法前,可以使用多态的方式解决上述需求。 程序:OverloadedMethods Public static void printArray( E[] inputArray) { for(E element : inputArray) System.out.printf(“%s “, element); System.out.println(); } 使用泛型方法,可以更方法快捷的重载方法, 依据传入泛型方法的实参类型,编译器会相应的处理每个方法调用。 使用泛型方法重写实现上述程序: GenericMethodTest 相关说明: Public static E void printArray( E() inputArray ) 所有的泛型方法声明都将类型参数表放在尖括号中,后跟方法的返回类型。 每个类型参数表可以包含一个或多个类型参数,用逗号隔开。 泛型方法中,类型参数可以用来声明方法的返回类型、参数类型、局部变量类型,充当传递给泛型方法的实参类型的占位符。 类型参数只能表示引用类型,不能表示基本类型(int、double等) Public static E void printArray( E[] inputArray ) 类型参数名在整个方法中要保持一致。 类型参数只能在类型参数表中声明一次,但可以在方法的参数表中出现多次。 例如: Public static E void printTwoArrays( E[] array1, E[] array2) 泛型方法的调用过程 当编译器遇到方法调用时,首先判断实参的类型,即Integer[], 接着编译器会试图寻找方法名为printArray,参数类型是Integer[]的方法,但是例子中没有这样的方法。 于是编译器会判断是否存在一个名为printArray的泛型方法,它制定单一数组参数,并使用类型参数来替换数组元素的类型。于是发现存在这样的方法,并设置了对这个方法的调用。 编译过程的“擦拭”技术 当编译器将泛型方法反映成java字节码时,会删除类型参数表,并用实际的类型替换类型参数,这一过程被称为擦拭。 默认情况下,所有的泛型类型都会使用Object类型替换。其实是使用“上界”替换。 在这个程序中使用了泛型方法,实现和重载相同的功能,更重要的是节约了大量代码,可见泛型带来的好处,可使得编程更加高效。 将类型参数用作返回类型 需求: 设计maximum方法,能确定并返回三个同类型实参中的最大者。 该程序应能接收不同类型参数并比较大小,例如String、Integer、Double……,并能返回相应类型的最大者。 设计思路: 可使用泛型方法,制定类型参数,代表方法中会使用到的参数类型。 比较大小可以使用关系运算符“>”、“<”,可是这些运算符不能用于引用类型。 但是如果某个类实现了泛型接口ComparableT,使用该接口中的comparaTo()方法则可比较这个类的两个对象。 程序示例:MaximumTest 相关方法: Public static T extends ComparableT T maximum(T x, T y, T z) 泛型方法中,不管类型参数是扩展自类还是实现了其他接口,一律使用关键字extends。 此处Comparable被称为类型参数的上界。 编译时,使用擦拭技术,将泛型类型用类型参数的上界替换。 Public static Comparable maximum (Comparable x, Comparable y, Comparable z) { Comparable max =x; …… } maximum(3, 4, 5)

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档