- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
泛 型
1. 介绍
下面是那种典型用法:
List myIntList = new ArrayList();// 1
myIntList.add(new Integer(0));// 2
Integer x = (Integer) myIntList.iterator().next();// 3
第 3 行的类型转换有些烦人。通常情况下,程序员知道一个特定的 list
里边放的是什么类型的数据。但是,这个类型转换是必须的(essential)。编
译器只能保证 iterator 返回的是 Object 类型。为了保证对 Integer 类型变量
赋值的类型安全,必须进行类型转换。
当然,这个类型转换不仅仅带来了混乱,它还可能产生一个运行时错误
(run time error) ,因为程序员可能会犯错。
程序员如何才能明确表示他们的意图,把一个 list(集合) 中的内容限制
为一个特定的数据类型呢?这就是 generics 背后的核心思想。这是上面程
序片断的一个泛型版本:
ListInteger myIntList = new ArrayListInteger(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = myIntList.iterator().next(); // 3
注意变量 myIntList 的类型声明。它指定这不是一个任意的 List ,而是
一个 Integer 的 List ,写作:ListInteger。我们说 List 是一个带一个类型
参数的泛型接口(a generic interface that takes a type parameter) ,本
例中,类型参数是 Integer。我们在创建这个 List 对象的时候也指定了一个
类型参数。
另一个需要注意的是第 3 行没了类型转换。
现在,你可能认为我们已经成功地去掉了程序里的混乱。我们用第 1
行的类型参数取代了第 3 行的类型转换。然而,这里还有个很大的不同。
编译器现在能够在编译时检查程序的正确性。当我们说 myIntList 被声明为
ListInteger类型,这告诉我们无论何时何地使用 myIntList 变量,编译器
保证其中的元素的正确的类型。
实际结果是,这可以增加可读性和稳定性(robustness) ,尤其在大型的
程序中。
2. 定义简单的泛型
下面是从java.util 包中的 List 接口和 Iterator 接口的定义中摘录的片断:
public interface ListE {
void add(E x);
IteratorE iterator();
}
public interface IteratorE {
E next();
boolean hasNext();
}
这些都应该是很熟悉的,除了尖括号中的部分,那是接口 List 和 Iterat
or 中的形式类型参数的声明(the declarations of the formal type param
eters of the interfaces List and Iterator)。
类型参数在整个类的声明中可用,几乎是所有可以使用其他普通类型的
地方
在介绍那一节我们看到了对泛型类型声明 List (the generic type decl
aration List) 的调用,如 ListInteger。在这个调用中(通常称作一个参数
化类
您可能关注的文档
最近下载
- 《国有企业管理人员处分条例》课件.pptx VIP
- 58同城如何发布房屋出租信息?房屋出租技巧?.doc VIP
- (GB国标)GBT 6324.3-2011有机化工产品试验方法 第3部分-还原高锰酸钾物质的测定.pdf
- 人教版高中英语必修第一册《UNIT 3 SPORTS AND FITNESS》大单元整体教学设计.docx
- 工程制图习题集(第3版)钟宏民 课后习题答案解析.pdf
- 地沟盖板图集02J331.docx VIP
- 美剧剧本怪诞小镇台词本中英文对照精排版第一季第一集.pdf VIP
- 小学英语课堂教学中问题情境创设策略的研究.pdf VIP
- 2025年上海市高考语文散文构思题及答案汇编.pdf VIP
- 2023年初中美术课题研究方案.docx VIP
文档评论(0)