快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
mo {   public static void main(String[] args)   {    Hashtable h = new Hashtable();    h.put(new Integer(0), "Horse Feathers");    String s = (String) h.get(new Integer(0));    System.out.println(s);   } }

像这样的代码如果反复编写会很费力(肯定可以证明),而且突出显示的代 码行的复杂性则掩饰了它实际上的简单目的。更糟的是,编译器捕捉不到不匹配 的类型——例如用 h.get() 检索出对象之后如果转换到错误的类型。实际上, 向下转型(downcasting)(沿着对象继承树向下转型的过程,比如从 Object 到 String)是 Java 程序的运行时 bug 的一大源头。

当然,还可以用固定类型实现自己的哈希表。例如,MyStringHashTable 可 能包装了通用的 Hashtable,而且只通过 Integer 索引添加了 String 元素。 在这种情况下,MyStringHashTable.put() 和 MyStringHashTable.get() 应当 适当地重新做定义,只接受类型正确的参数,并返回 String。

虽然这样的 MyStringHashTable 是类型安全的,但它就不再灵活了。要把新 形式的数据保存到哈希表中,就必须在全新的独立对象中重新创建大多数 MyStringHashTable 代码。

进入泛型

理想情况下,像 Hashtable 类这样的东西,应当既灵活 又 严格(类型安全 ):例如,键和值的类型应当是在初始化的时候参数化,避免类型转换的需要, 允许编译器捕获类型不匹配。而且,实际上,参数化类型也是 Java V1.5 的新 泛型的基础。

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

时间:2010-12-02 IBM Martin Streicher

创建和使用泛型

在这一节,使用 Eclipse 及其对泛型的支持创建和优化示例应用程序。

如果还没启动 Eclipse,请启动它,进入工作台创建新项目。要创建新项目 ,请选择 File > New > Project...。指定 Generics Example 作为项目 名称,并从 JDI Compliance 区中选择 5.0(单击下拉菜单可以找到)。最后, 单击 Finish。

在新项目中创建 Java 类。请选择 File > New > Class,输入 demo 作为包名称,输入 Demo 作为类名。选中复选框,生成 public static void main(String[] args) 方法框架。现在,单击 Finish。

在 Package Explorer 面板中单击新的 Demo 类,然后把清单 3 的代码复制 并粘贴到 Demo.java 面板中。

清单 3. 简单的泛型类

package  demo; class GenericContainer <A> {   private A data;   public GenericContainer(A data)   {    this.data = data;   }   public A get()   {    return data;   } } public class Demo {   public String storeString(String s)   {    GenericContainer<String> gc =     new GenericContainer<String>(s);    String t = gc.get();    return t;   }   public Integer storeInteger(Integer i)   {    GenericContainer <Integer> gc =     new GenericContainer<Integer> (new Integer(i));     return gc.get();   }   public static void main(String[] args) {    Demo d = new Demo();    System.out.println(d.storeString("This is a test"));    System.out.println(d.storeInteger(18000));   } }

按 Ctrl+S 组合键保存代码,并选择 Run > Run...。出现 Run 对话框时 ,单击右下角的 Run 按钮。输出面板中应产生以下输出: This is a  test  18000

将鼠标指针悬停在 gc.get() 每个调用上。若您悬停在 storeString 中的第 一次使用上,会弹出一个小提示信息,指示 gc.get() 返回一个 Strin

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