快速业务通道

Eclipse V3.1中的Java泛型支持 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04

图 9. 搜索窗口的过滤菜单允许您过滤泛型感知的结 果

如果您使用 Filter Incompatible 过滤结果,将删除两个不是基于 Employee 的条目。结果如图 10 所示。

图 10. Filter Incompatible 在搜索窗口过滤掉与非 Employee 相关的条目

Eclipse V3.1中的Java泛型支持(6)

时间:2010-12-02 IBM Neal Ford

深入了解泛型

不幸的是,Eclipse 不能解决您所有的泛型问题。事实 上,有时重构会为您要解决的问题产生语法正确但是语义不正确的代码。具有讽刺意味的是,在泛型出现之前的那些日子更轻松,因为您必须将所有东西都作为 对象的泛型集合传递。而现在您必须小心地传递正确类型的集合。

考虑 这个例子。在 HR 应用程序中,您添加一个方法确定雇员的退休年龄。然而, Employee 的年龄是来自于 Employee 的父类:Person。写一个方法只接受在这 个实例中工作的雇员,但是您不想将您的应用程序只用于雇员。如果将来您需要 查询以前的雇员(作为 Persons),该怎么办呢?

这个问题的解决方案 在于灵活的泛型参数。请考虑清单 6 中的代码,它接受任何扩展自 Person 的类。

清单 6. 示例 SELECT 语句

public List<Person>  empsOverRetirementAge(             List<?  extends Person> people) {   List<Person> retirees  = new ArrayList<Person>(1);   for (Person e :  people)     if (e.getAge() > 65)        retirees.add(e);   return retirees; }

该方法 接受 Person 的任何子类,所以更灵活。使用泛型的时候,您应该牢记这一点。在本例中,泛型实际上比较特定(至少,他们应该称这种语言特性为“特 定性”)。仔细识别参数类型能够使您的代码获得同样的灵活性,因此性 能比泛型更好,但是具有泛型提供的附加的类型安全性。

结束语

泛型支持大大增强了 Java 编程语言,工具供应商必然需要很长时间才能赶上。现在有了好的工具支持,您应该开始利用这种高级语言特性。它使代码更加可读 —— 因为删除了类型强制转换 —— 并且允许编译器为 您做更多的工作。任何时候您都可以让编译器和其他的工具(如 IDE)做更多的工作,这意味着您要做的工作更少。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号