Java.In.A.Nutshell.5th(泛型).docVIP

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

4.1. 泛型 泛类型和泛型方法是Java5.0中的新特性。一种泛类型用一个或多个泛型变量定义,可以有一个或多个,泛型变量做参数占位符或做返回值的方法。例 如,类型 java.util.ListE 是一种泛类型:一个 list ,它的元素类型是E 这个占位符表示的类型。这个类型有一个叫 add() 的方法,有一个参数类型为 E ,有一个名叫 get() 的方法,返回一个类型为 E 的值。 为了可以象往常一样使用泛类型,你需要为泛型变量(或是变量)指定一个实际的类型,产生一个参数化类型,就象 ListString 。这样做的原因是,为编译器提供一个特定的类型信息,让它可以在编译期为你做类型检查,这样可以大大增加你程序的类型安全。例如,有一个 List 打算容纳 String 类型的对象,这种类型安全检查阻止你增加一个String[] 的元素。而且,这附加的类型信息使编译器帮你做些造型的活儿。例如,编译器知道 ListString 的 get() 方法返回一个String类型对象,你不再需要把Object类型的返回值造型成一个String类型的对象。 [1] 整个这章,我们将统一使用这些术语。泛类型:意味着一个类型,可以声明一个或多个泛型变量。参数化类型,意味着一个(运行期的)泛类型,表示它的泛型变量被实际类型做为参数值替换了。但在通常的应用中,两个术语的差别不是太明显,有时还可以替换。 在Java 5.0中,包java.util中的Collection类都已经被泛化了,你可能会在程序中频繁的用到它们。类型安全的Collection是应用泛类 型的典范。可能你还从没有定义过自己的泛类型,也从没用过Collection(在包 java.uitl中)之外的泛类型,但类型安全的Collection的好处是显而易见的,它将证实这个新的,复杂的,主要且重要的语言特性。 我们将从探索类型安全的Collection的基本泛化用法开始,然后深入泛类型用法更为复杂的细节。接下来,我们将覆盖泛型参数通配符和边界通配 符。再说明怎么用泛类型,我们将阐述怎样写自己的泛类型和泛型方法。我们涉及的泛型知识包括了 Java API 中关于泛类型的主要部分。深入的探讨了这些类型和他们的用法,为的是更深入的理解泛型是如何工作的。 4.1.1.类型安全的Collection 在包 java.util 中包含了 Java 的Collection框架(set、list--关于对象、map--关于关键字对象和值对象的对)。 Collection 将在第五章讨论。这里我们只讨论有关在 Java 5.0 的Collection类中,用泛型参数标识Collection对象类型的内容。这在 Java 1.4 或是更早的 Java 版本中,没有这个用法。在没有泛型应用Collection的时候,需要程序员正确记得每个Collection的每个元素的类型。当我们建立一个 Java 1.4 的Collection时,你知道打算把什么样的类型对象放入这个Collection中,但是编译器不知道这些。你增加元素时必须小心正确性。并且当获 取一个Collection的元素时,你必须显示的造型对象Object 到它们实际的类型。思考在 Java 1.4 中的如下代码: java代码 public static void main(String[] args) { // This list is intended to hold only strings. // 这个list仅容纳字符串对象。 // The compiler doesnt know that so we have to remember ourselves. // 编译器不知道这些,我们必须自己记住。 List wordlist = new ArrayList(); // Oops! We added a String[] instead of a String. // 哎哟! 我们增加了个String[]元素,而不是String类型的。 // The compiler doesnt know that this is an error. // 编译器是不知道那个错误的 wordlist.add(args); // Since List can hold arbitrary objects, the get() method returns // Object. Since the list is intended to hold strings, we cast the // retur

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档