- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
介召JDK5中的泛型
介召JDK5 中的泛型
开始之前
关于本教程
JDK 5.0 (也叫做 Java 5.0 或者 Tiger )给 Java 语言带来了一些较大的变化。其中最重要的变化就是引入了泛型 ——
支持定义带有抽象类型参数的类,这些参数由您在实例化时指定。泛型为提高大型程序的类型安全和可维护性带来
了很大的潜力。
泛型与 JDK 5.0 中其他几个新的语言特性相互协作,包括增强的 for 循环(有时叫做 foreach 或者 for/in 循环)、
枚举(enumeration )和自动装箱(autoboxing )。
本教程解释了在 Java 语言中引入泛型的动机,详细介绍了泛型的语法和语义,并讲述了如何在自己的类中使用泛
型。
本教程针对中高级 Java 开发人员,他们想要了解针对泛型的新语言支持是如何工作的。本教程假定读者熟悉在
Java 语言中开发接口和类,并且具有基本的面向对象设计技能。
泛型语言特性只在 JDK 5.0 及以后版本中可用。如果您是基于较早的 JDK 版本开发软件,那么在迁移到 JDK 5.0 或
以后版本之前,将无法在代码中使用泛型特性。
先决条件
为了使用泛型,必须具有一个 JDK 5.0 开发环境。可以从 Sun 公司的 Web 站点免费 下载 JDK 5.0
(/j2se/1.5.0/index.jsp)。
关于作者
Brian Goetz 是 developerWorks Java 专区的定期专栏作家,在过去的 18 年中,他一直是一名专业软件开发人员和
管理人员。他现在是 Quiotix 公司的首席顾问,这是位于 Los Altos, CA 的一家软件开发和咨询公司。在流行的业界
出版物中查阅 Brian 的 已经发表和即将发表的文章。可通过 brian@ 与 Brian 联系
泛型简介
什么是泛型?
泛型(Generic type 或者 generics )是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。
可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位
符一样。
可以在集合框架(Collection framework )中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,
即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String )的对象。
因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代
码所示:
Map m = new HashMap();
m.put(key, blarg);
String s = (String) m.get(key);
要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String 。但是有可能某
人已经在该映射中保存了不是 String 的东西,这样的话,上面的代码将会抛出 ClassCastException 。
理想情况下,您可能会得出这样一个观点,即 m 是一个 Map,它将 String 键映射到 String 值。这可以让您消除
代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合
中。这就是泛型所做的工作。
泛型的好处
Java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类
库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。这带来了很多好处:
类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以
在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存
在于代码注释中)。
Java 程序中的一种流行技术是定义这样的集合,即它的元素或键是公共类型的,比如“String 列表”或者“String 到
String 的映射” 。通过在变量声明中捕获这一附加的类型信息,泛型允许编译器实施这些附加的类型约束。类型错误
现在就可以在编译时被捕获了,而不是在运行时当作 ClassCastException 展示出来。将类型检查从运行时挪到编译
时有助于您
文档评论(0)