快速业务通道

在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
    default:    return "Unknown Color";        }      }}

枚举类型的函数定义的应用是很有用的, 例如可以让多个枚举类型实现同一个 interface 来达到程序设计的模式化. 例如一个定义了getDescription ()接口的 interface,让有同样需求的不同枚举类型来实现它.上面的colorFeature 可以实现它, 另 一个FontFeature也可以实现它.

在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型(7)

时间:2011-04-02 IBM 邹青 吴嫣 吴疆

1.3.5 特定于常量的类主体

在上一节里提到枚举类型可以定义自己的函数,其实更进一步,枚举类型的每一个值 都可以实现枚举类型里定义的抽象函数,这听起来很不可思议,我们可以先看下面的例子 .

public enum Priority implements Feature {   High (38) {      public void perform() {        System.out.println("high 38");      }    },    Medium(36.5) {      public void perform() {        System.out.println("medium 36.5");      }    },    Low (5.2){      public void perform() {        System.out.println("low 5.2");      }    };    public abstract void perform();    public String getDescription(Priority p) {      return null;    } }

枚举类型Priority 定义了一个抽象函数perform(),Priority的每一个值都对perform 函数实现了重载,这就是枚举类型的特定于常量的类主体.在这种情况下,每声明一个值 ,枚举类型的一个子类生成,然后生成这个子类的唯一的实例来表示这个值.不同的值, 就有对应的不同的子类.每个子类可以对父类的抽象函数进行重载.我们可以用下面的程序 在Eclipse3.1环境中运行来证明此时3个子类生成.

public class Task {    Priority myPriority; public Task (Priority p) {      myPriority=p; } public Priority getPriority(){    return myPriority; } public void test() throws IOException {    if (myPriority == Priority.High)         System.out.println(Priority.High.getClass().getName());       if (myPriority == Priority.Medium)         System.out.println(Priority.Medium.getClass().getName());     if (myPriority == Priority.Low)         System.out.println(Priority.Low.getClass().getName()); }} public class TestSwitch {    public static void main(String[] args) {      Task task = new Task(Priority.High);    Task task1 = new Task(Priority.Medium);    Task task2 = new Task(Priority.Low);    try {    task.test();    task1.test();    task2.test();    } catch (IOException e) {    e.printStackTrace();    }    }

运行结果如下图10.

图9 测试特定于常量的类主体运行结果

在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型 - 编程入门网

由于特定于常量的类主体难理解容易出错,它的应用比较少,大多数情况下可以用 switch-case 语句替代. 在这里简单介绍,仅供参考.

1.4 枚举类型的小结

使用枚举类型是很简单的.它定义一个固定的、封闭的值集合,然后,在需要这些值中 的某一个值时,可以通过它的名称来指定它,这就是枚举类型的简单性.枚举类型的值就 是枚举类型的实例,编译器会确保没有传入其他的类型,这就是枚举类型的安全性.这些 枚举类型就是类本身,因此,可以对类进行的所有操作同样可以作用于枚举类型上.我们 要小心使用构造函数和函数重载方法,不要因为这些特性可用就任意使用它们.比如特定 于常量的类主体,大多情况下可

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