java中enum的用法总结
来源:互联网 发布:淘宝客服每日工作总结 编辑:程序博客网 时间:2024/05/30 05:22
一、enum的语法与基本作用
创建一个枚举类型需要使用关键字enum,隐含了所创建的类都是java.lang.Enum的子类。枚举类型的每一个值都被映射到protect enum(String name, int ordinal);的构造函数中,在这里枚举的每一个值都被转换成一个字符串,并且同时对应一个下标(从0开始的)。
在实际开发中往往需要处理一些“数据集”,这些数据集在程序中是相对稳定的,如一周的七天或一年四季等,这时枚举就派上了用处。
public enum TestEnum{ //这里的每一个值其实也相当于是一个实例 MON, TUE, WED, THU, FRI, SAT, SUN;}//这段代码其实相当于调用了7次protect enum(String name, int ordinal);new Enum<TestEnum>("MON", 0);new Enum<TestEnum>("TUE", 1);......
二、遍历、switch 等常用操作
对enum进行遍历和switch的操作示例代码:
public class Test { public static void main(String[] args) { for (EnumTest e : EnumTest.values()) { System.out.println(e.toString()); } System.out.println("----------------我是分隔线------------------"); EnumTest test = EnumTest.TUE; switch (test) { case MON: System.out.println("今天是星期一"); break; case TUE: System.out.println("今天是星期二"); break; // ... ... default: System.out.println(test); break; } }}输出结果:MONTUEWEDTHUFRISATSUN
—————-我是分隔线——————
今天是星期二
enum 对象的常用方法介绍
int compareTo(E o)
比较此枚举与指定对象的顺序。
Class getDeclaringClass()
返回与此枚举常量的枚举类型相对应的 Class 对象。
String name()
返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal()
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString()
返回枚举常量的名称,它包含在声明中。
static
public class Test { public static void main(String[] args) { EnumTest test = EnumTest.TUE; //compareTo(E o) switch (test.compareTo(EnumTest.MON)) { case -1: System.out.println("TUE 在 MON 之前"); break; case 1: System.out.println("TUE 在 MON 之后"); break; default: System.out.println("TUE 与 MON 在同一位置"); break; } //getDeclaringClass() System.out.println("getDeclaringClass(): " + test.getDeclaringClass().getName()); //name() 和 toString() System.out.println("name(): " + test.name()); System.out.println("toString(): " + test.toString()); //ordinal(), 返回值是从 0 开始 System.out.println("ordinal(): " + test.ordinal()); }}输出结果:TUE 在 MON 之后getDeclaringClass(): com.hmw.test.EnumTestname(): TUEtoString(): TUEordinal(): 1
三、给枚举类型自定义属性和方法
public enum TestEnum{//必须写在第一行,要么全部赋值要么全不赋值 MON(1), TUE(2), WED(3), THU(4), FRI(5), SAT(6), SUN(0){ public int text(){ return i; }}; private int value; private TestEnum(int value){ this.value = value; } public int getValue(){ return value; }}public static void main(String[] args) { System.out.println(EnumTest.WED.getValue();); }
四、EnumMap和EnumSet的应用
public static void main(String[] args) { // EnumSet的使用 EnumSet<TestEnum> weekSet = Enum.allOf(TestEnum.class); for(TestEnum day : weekSet){ System.out.println(day); } // EnumMap的使用 EnumMap<TestEnum, String> weekMap = new EnumMap(TestEnum.class); weekMap.put(TestEnum.MON, "星期一"); for(Iterator<Entry<TestEnum, String>> iter = weekMap.entrySet().iterator(); iter.hashNext();){ Entry<TestEnum, String> entry = iter.next(); System.out.println(entry.getKey().name + entry.getValue()); } }
总结
实际上可以吧enum看做一个普通的class类,他们都可以定义自己的属性和方法,不同之处在于enum不可以继承,因为java是单继承,已经继承了java.lang.Enum.
阅读全文
0 0
- Java中enum的用法总结
- java中enum的用法总结
- java enum的用法总结
- java 中enum的用法
- java中enum的用法
- Java中Enum的用法
- Java中enum枚举类型用法总结
- Java 枚举类Enum的用法总结
- Java中Enum列举的用法
- Java中Enum列举的用法
- java中枚举类型Enum的用法
- JAVA中enum的常见用法
- JAVA中enum的常见用法
- JAVA中enum的几种用法
- Java中enum的学习总结
- java enum的用法
- java enum的用法
- Java enum的用法
- Hadoop运行jar包jdk版本冲突问题解决
- Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法
- PhpStorm+Xampp+Xdebug配置
- 博客连接
- unity3d防止材质贴图丢失解决办法
- java中enum的用法总结
- 提交已有项目到GitHub
- 多线程-多线程常见的面试题
- 有十个台阶,一步或两步走,上楼梯有几种上法?
- 对象的赋值与对象的复制
- Centos 7 安装 Jenkins
- 如何求系统时间
- 调优(一)
- java.lang.System