java中枚举的使用

来源:互联网 发布:vj软件resolume 编辑:程序博客网 时间:2024/05/21 22:54

在JDK1.5引入了新的类型——枚举,存放在 java.lang 包中。
下面是我在使用 enum 过程中的一些代码

package com.test;// 枚举用于存放同一类型的参数public enum TestWeekEnum {Monday(1, "星期一"), Tuesday(2, "星期二"), Wednesday(3, "星期三"), Thursday(4, "星期四"), Friday(5, "星期五"), Saturday(6, "星期六"), Sunday(7, "星期天");int code;// 参数值String destription;// 参数说明TestWeekEnum(int code, String destription) {this.code = code;this.destription = destription;}// 判断传入code在枚举中是否存在public boolean eqlues(TestWeekEnum type, int code) {return code == type.code;}// 根据传入code返回相应的枚举类型public static TestWeekEnum getDiscountType(int code) {for (TestWeekEnum valuesEnum : TestWeekEnum.values()){if (code == valuesEnum.getCode()){return valuesEnum;}}return null;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getDestription() {return destription;}public void setDestription(String destription) {this.destription = destription;}public static void main(String[] args) {System.out.println(TestWeekEnum.Monday.code);System.out.println(TestWeekEnum.Monday.destription);System.out.println(TestWeekEnum.getDiscountType(3).destription);// 枚举是一种类型,用于定义变量,以限制变量的赋值;赋值时通过“枚举名.值”取得枚举中的值TestWeekEnum testWeekEnum = TestWeekEnum.Sunday;switch (testWeekEnum) {case Monday:System.out.println("week is Monday");break;case Tuesday:System.out.println("week is Tuesday");break;case Thursday:System.out.println("week is Thursday");break;case Wednesday:System.out.println("week is Wednesday");break;case Friday:System.out.println("week is Friday");break;case Saturday:System.out.println("week is Saturday");break;case Sunday:System.out.println("week is Sunday");break;default:System.out.println("null");break;}// 遍历枚举System.out.println("遍历TestWeekEnum枚举中的值");for (TestWeekEnum week : TestWeekEnum.values()){System.out.println(week);}// 获取枚举的个数System.out.println("TestWeekEnum枚举中的值有" + TestWeekEnum.values().length + "个");// 获取枚举的索引位置,默认从0开始System.out.println(TestWeekEnum.Monday.ordinal());// 0System.out.println(TestWeekEnum.Tuesday.ordinal());// 1// 枚举默认实现了java.lang.Comparable接口System.out.println(TestWeekEnum.Monday.compareTo(TestWeekEnum.Sunday));// -1}}


 enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum。实际上 enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。

0 1
原创粉丝点击