在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型 - 编程入门网
m< Priority >("High", 0);
new Enum< Priority >("Medium", 1);
new Enum< Priority >("Low", 2);
每一个创建的枚举类型都是Enum 的子类,除 了上面调用父类 Enum 的构造函数外,枚举类型可以使用参数为定义一些自己的构造函数 .当声明值时,只需调用此枚举类型定义的构造函数,而且不必添加 new 关键字.在清单3 里, Priority 的一个实例生成,这个实例就是High (38). 清单3.其它构造函 数调用
在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型(3)时间:2011-04-02 IBM 邹青 吴嫣 吴疆另外要强调 的两点: 一是这些枚举类型的构造函数都是私有的.它是不能被其它的类或者其它的枚举 类型调用的. 而且这个私有修饰符是由编译器自动加的,如果我们定义这些构造函数时,在 前面加上public 修饰符, 就会导致编译错误, 如下图5所示. 二是变量定义必须在枚举类 型值定义之后. 上图中double temperature 必须在枚举类型值定义完了(分号表示枚举类 型值定义完了, 如 Low(5.2);) 才能声明. 图4. 枚举类型的构造函数是私有的 在J2SE 5.0以前,当我们实现一个枚举类时,一般都是把一个整数关联到此枚举类的 某一个值的名字,出现的问题是同一个整数可以代表不同枚举类的值. 下面的例子里定义 两个枚举类 Course and Grade 如下: 清单4.
如果开发者误把student1.assignGrade(Grade.A)写成student1.assignGrade (Course.EnglishList); 在编译 阶段是不能发现问题的,如果用J2SE 5.0 枚举类型 (enum)可以避免这些问题. 枚举类型每一个值都是public, static and final的.也就是说,这些值是唯一的而且 一旦定义了是不能被重写或修改.而且尽管在枚举类型每一个值声明时没有出现static关 键字, 实际上值都是静态的, 而且我们不能在值前面加上static, public,final 修饰 符,否则就会出现下图 6的错误. 图5 枚举类型值的错误声明 枚举类型都实现了java.lang.Comparable,枚举类型的值是可以比较排序的, 排列顺序就是枚举类型定义这些值的顺序. 在Eclipse 3.1中体验J2SE 5.0的新特性: 第一部分 :枚举类型(4)时间:2011-04-02 IBM 邹青 吴嫣 吴疆1.3 枚举类型的应用 下面各小 节介绍了枚举类型的各种应用. 1.3.1循环(Iteration) 当我们写程序时 ,常常遇到对数组或列表里的每一个对象进行处理的情况.在J2SE 5.0以前,如果要在一 个数组或列表里进行轮循时,我们的做法比较繁琐,需要借助java.util.Iterator 类, 如下所示: 清单5:
现在我们可以通过J2SE 5.0 的for/in loop和枚举类型一起使用. 这能使以前花很多时间 写的程序简单化,如上面清单5的程序可简化为: 清单6:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |