正 文

Eclipse 3.1中的Java泛型支持


www.7dspace.com  更新日期:2005-12-10 2:10:56  七度空间



  快速修复特性

  每当 Eclipse 要给您的代码建议一种改进时,Eclipse 的快速修复特性就显示为编辑器窗口左侧边栏上的一个灯泡。在清单 1 中的代码中,您将会看到多个快速修复。

图 3. 快速修复灯泡指示您的代码待改进

快速修复

  快速修复使用灯泡和黄色波浪线指示待改进处。如果将鼠标移动至黄色波浪线上,可以看到出现在图 4 中的改进建议。

图 4. 快速修复指示什么应该被通用化

快速修复指示什么应该被通用化

  这里所列的快速修复建议只有一条建议。边上的灯泡提出建议,添加一个本地变量保存 List 的 add() 方法的返回值。然而,在这里该方法返回一个布尔类型值,并且被忽略了。

  为了定位快速修复建议,移至重构菜单。Eclipse 中很多重构与 Java 5 中的泛型直接相关。“Infer Generic Type Arguments”重构将给列表增加泛型支持。 第一个对话框允许您选择选项。

图 5. Infer Generic Type Arguments choices 对话框

Infer Generic Type Arguments choices 对话框

  第一个选项与一个结论相关,这个结论是 clone() 方法将返回接收者类型而不是另外一个类型(相关类)。大部分功能良好的类都遵守这个规则,如果您知道您的类不遵守这个规则,则不要选中这个选项。当第二个选项未选中时,将保留“raw”(非泛型)参数,而不是推断出正确的泛型参数类型。

  Eclipse 中的大多数重构中,您都可以预览您的类将发生什么变化。点击这个对话框上的 Preview 按钮将出现图 6 所示的对话框。

图 6. Preview the generic refactoring

Preview the generic refactoring

  更新后的代码如下:

清单 2. 更新后的代码

List<Employee> empList = new ArrayList<Employee>(5); empList.add(new Employee("Homer", 200.0, 1995)); empList.add(new Employee("Lenny", 300.0, 2000)); empList.add(new Employee("Waylon", 700.0, 1965)); empList.add(new Manager("Monty", 2000.0, 1933, empList.get(2)));

  代码发生了两个有趣的变化。第一 —— 也是最明显的 —— List 和 ArrayList 声明现在是 Employee 类型的泛型。第二 —— 不太明显 —— 代码最后一行发生的变化。您观察一下 Manager 类的原来的 empList 添加,它的最后一个参数需要针对 Assistant 域强制类型转换为 Employee。而 Infer 重构足够聪明,它可以删除现在不必要的类型强制转换。

  在介绍完快速修复之前,Eclipse 还在 Java 5 支持中增加了另外一个有趣的方面:您可以得到为方法添加注释的建议,比如 @Override。您还具有针对注释的内容帮助。

图 7. 针对注释的快速修复和内容帮助扩展

针对注释的快速修复和内容帮助扩展

5页,页码:[1] [2] [3] [4] [5] 

上一篇:VB.Net编程实现Web Service的基础
下一篇:巧用AutoCAD阵列做法兰零件排料图
作者:Neal Ford  来源:ibm ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐