java中枚举的使用
2016-05-31 11:12
603 查看
在JDK1.5引入了新的类型——枚举,存放在 java.lang 包中。
下面是我在使用 enum 过程中的一些代码
enum 的语法结构尽管和 class 的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum。实际上
enum 就是一个 class,只不过 java 编译器帮我们做了语法的解析和编译而已。
下面是我在使用 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());// 0 System.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 编译器帮我们做了语法的解析和编译而已。
相关文章推荐
- JAVA_JSON
- spring3.2.0与mybatis3.2.7整合出错--Failed to read candidate component class--nested exception is java.lang.IllegalArgumentException
- java的Date、SimpleDateFormat、GregorianCalendar之间的转化
- 再探Java基础——throw与throws
- JDK环境变量配置教程分享
- ubuntu下配置JDK7环境变量
- 工作中常用到的一些java工具类
- JAVA 对象深度复制实现
- struts2 拦截器,使用spring注入
- JAVA学习笔记整理六(类集框架)
- springboot多数据源读写分离和主库数据源service层事务控制
- Java 八种排序算法比较实践
- java endian 字节序
- Spring Validation分组校验
- JAVA中&&和&、||和|(短路与和逻辑与、短路或和逻辑或)的区别?
- java代码在页面实现展示pdf文件
- Java socket与JDBC的共用
- 几款Java反编译软件
- 自己实现简单Spring Ioc
- JAVA 加载文件的三种方式的区别