第7章-泛型概要.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章-泛型概要

目标 泛型概述 什么是泛型 泛型是JDK5.0的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。这种类型参数可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的目的主要是为了类型安全。 在JDK5.0之前,没有泛型的情况的下,使用Object类型的变量来代表任意类型的数据,但“任意化”带来的缺点是需要显式的强制类型转换,此种转换要求开发者必须明确知道变量的真实类型。对于强制类型转换错误的情况,编译器可能不提示错误,但在运行的时候会出现异常,这是一个安全隐患。 泛型概述-1 不使用泛型实现参数化类型 泛型概述-2 再创建一个Integer版本和String版本的NoGeneric对象进行测试,代码如下: 泛型概述-3 使用泛型实现参数化类型 首先利用泛型定义泛型类Generic,代码如下: 泛型概述-4 再创建一个Integer版本和String版本的Generic对象进行测试,代码如下: 泛型定义 泛型语法结构归纳为如下形式 : 有界类型-1 有界类型 定义泛型类时,可以向类型参数指定任何类型信息,特别是集合框架操作中,可以最大限度的提高泛型类的适用范围。但有时候需要对类型参数的取值进行一定程度的限制,以使数据具有可操作性。 为了处理这种情况,Java提供了有界类型。在指定类型参数时可以使用 extends关键字限制此类型参数代表的类必须继承自指定父类或父类本身。 有界类型-2 有界类型实例 有界类型-3 测试BoundGeneric类 泛型接口-1 泛型接口 泛型接口的定义方法与泛型类类似,语法结构如下: 泛型接口-2 泛型接口实例 首先创建了一个泛型接口,用于计算某对象集的平均值,代码如下: 泛型接口-3 现在定义AverageImpl类,实现Average接口,代码如下: 泛型接口-4 分别指定Integer、Double类型作为类型参数进行测试: 泛型方法 泛型方法 除了泛型类和泛型接口,也可以使用泛型定义泛型方法。 当方法需要使用的泛型在类中并没有声明时,需要使用泛型方法。 可以采用如下结构定义: 泛型方法-1 泛型方法实例 演示在非泛型类中定义并使用泛型方法。 首先创建了一个普通类,并实现一个泛型方法用于比较两个数组的和是否相等,代码如下: 泛型方法-2 根据上述定义,实现测试代码: 泛型的继承 泛型的继承 和非泛型类一样,泛型类既可以作为父类也可以作为子类,在泛型类的继承层次中,全部子类必须将泛型父类所需的类型参数沿继承层次向上传递。 泛型的继承-1 泛型的继承-2 泛型的局限性 小结 第七章 泛型 理解泛型的概念 掌握泛型类的创建和使用 掌握泛型方法的创建和使用 掌握泛型接口的创建和使用 掌握泛型在继承中的应用 掌握泛型使用的限制 public class NoGeneric { private Object ob; // 定义一个通用类型成员 public NoGeneric(Object ob) { this.ob = ob; } public Object getOb() { return ob; } public void setOb(Object ob) { this.ob = ob; } public void showType() { System.out.println(实际类型是: + ob.getClass().getName()); } } public class NoGenericDemo { public static void main(String[] args) { // 定义类NoGeneric的一个Integer版本 NoGeneric intOb = new NoGeneric(new Integer(88)); intOb.showType(); int i = (Integer) intOb.getOb(); System.out.println(value= + i); // 定义类NoGeneric的一个String版本 NoGeneric strOb = new NoGeneric(Hello Gen!); strOb.showType(); String s = (String) strOb.getOb(); System.out.println(value= + s); } } 执行结果如下: /实际类型是: java.lang.Integer v

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档