快速业务通道

探索Eclipse V3.1的新特性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
g,而悬 停在第二个使用时,会提示实例方法返回了一个 Integer (请参阅图 3)。

图 3. 跟踪一个通用方法调用,查看它返回的类型

现在您知道了为什么要把泛型添加到 Java 中,以及泛型的工作方式。下面 将介绍 Eclipse V3.1 是如何支持和增强泛型的。

探索Eclipse V3.1的新特性(6)

时间:2010-12-02 IBM Martin Streicher

用泛型捕获错误

因为泛型的目的是帮助避免向下转型错误,所以 Eclipse 会标记出可通过泛 型的使用获益的操作。

例如,请在 Eclipse 中用 5.0 编译器设置创建下面这个简短的 Java 应用 程序:

package demo; import java.util.ArrayList; public class Demo2 {   public static void main(String[] args) {    ArrayList a = new ArrayList();    a.add(new Integer(1));   } }

代码输入之后,两个小图标 —— 一个蓝色灯泡和一个警告标记 —— 会出 现在 a.add(...) 的起始行上,如图 4 所示。如果将鼠标悬停在这个图标上, 会出现一条消息,提示您 ArrayList 应当参数化。

图 4. Eclipse 指出更适于使用泛型的时机

类型安全更强的代码是 ArrayList>Integer< a = new ArrayList>Integer<()。

Eclipse 还提供了重构技术,可以促进泛型的使用。请看清单 4.

清单 4. 将代码重构为使用泛型

package demo; import java.util.ArrayList; import java.util.List; public class Demo3 {    public class Brother {     private String name;     public Brother(String s) {      name = s;     }     public String get() {      return name;     }    }    public static void main(String[] args) {     Demo3 d = new Demo3();     List l = new ArrayList(3);     l.add(d.new Brother("Groucho"));     l.add(d.new Brother("Harpo"));     l.add(d.new Brother("Chico"));     l.add((Brother) l.get(1));     for (int i = 0; i < l.size(); i++) {      Brother b = (Brother) l.get(i);      System.out.println(b.get());     }    } }

输入以上代码后,Eclipse 将使用蓝色灯泡和黄色波浪线标记许多行,表示 可以做改进。要将其重构为使用泛型,请选择 Refactor > Infer Generic Type Arguments。出现下一对话框时,把两个选项都选中,然后单击 Preview 按钮。Eclipse 会展示要做的变化,如图 5 所示。

图 5. 在 Eclipse 中预览重构为使用泛型的情况

Eclipse 重构器不仅对 List 和 ArrayList 进行参数化,而且删除了 for 循环中的类型转换。单击 OK 接受修改。代码转换为:

List>Brother< l = new ArrayList>Brother< (3); ... l.add(l.get(1));

最后,在任何 Eclipse 处理非泛型类型的地方,都能处理泛型类型。例如, 可以安全地把泛型类型改名。

探索Eclipse V3.1的新特性(7)

时间:2010-12-02 IBM Martin Streicher

新循环

随着泛型的加入,Java V5 现在支持 foreach 的一种快捷方式,对列表中的 元素进行迭代。输出 List l 成员的旧式 for 循环可改写为一种更干净的格式 :

for (Brother b: l)   System.out.println(b.get());

就像对许多旧 Java 语言特性一样,Eclipse V3.1 包含了一个针对 J2SE V1.5 的新 foreach 构造的模板。Eclipse 不仅会生成 foreach 代码,还会猜 测(根据上下文和位置)要对哪个集合进行迭代。

例如,在最后一个 l.add() 后输入 fore,然后按下 Ctrl+Space。Eclipse 会把 foreach 模板作为

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号