阅读586 返回首页    go 阿里云 go 技术社区[云栖]


《数据结构与抽象:Java语言描述(原书第4版)》一JI1.1 泛型数据类型

本节书摘来华章计算机《数据结构与抽象:Java语言描述(原书第4版)》一书中的第1章 ,第1.1节,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 着 罗得岛大学  新英格兰理工学院 辛运帏 饶一梅 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

JI1.1 泛型数据类型

泛型能让你在类或接口的定义中写一个占位符,而不是实际的类类型。占位符是泛型数据类型(generic data type),也可以简称为泛型(generic type)或类型参数(type parameter)。当定义一个其实例保存不同数据集合的类时,不需要给出这些集合中对象的具体数据类型。而是使用泛型数据类型替代实际的数据类型,定义一个泛型类(generic class),由客户选择集合中对象的数据类型。
如附录B所提到的,类Object是所有其他类的最终的祖先。给定指向任意类型对象的一个引用,可以将这个引用赋给Object类型的变量。虽然可能试图将Object用作泛型类,但不应该这样做。而是应该使用泛型数据类型来表示任意的类类型。
假定有对象数组A。如果A的数据类型声明为Object[],就可以将对象,比方说字符串,放到数组中。但是,没有办法阻止你将多个其他类的对象与字符串一起放到数组中。听上去这或许挺吸引人的,但使用这样的数组可能有问题。例如,如果从数组中删除一个对象,你不知道它的动态类型是什么。它是字符串还是某个其他类型的对象?不过,方法能获取对象的动态类型,所以这样的数组还是可以使用的。
相反,由泛型变量指向的项的数组或任何其他的组,可能仅含有因继承而相关的类的对象。所以,使用泛型,可以限制集合中项的类型。这个限制很正常,因为它使得这些集合易于使用。

最后更新:2017-06-26 16:02:24

  上一篇:go  沉寂 22 年 386BSD 系统更新:开源系统鼻祖
  下一篇:go  《数据结构与抽象:Java语言描述(原书第4版)》一练习