简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:

  1. 性别:
  2. public enum SexEnum {
  3.  
  4. male, female;
  5.  
  6. }
  7.  
  8. 颜色:
  9. public enum Color {
  10.  
  11. RED, BLUE,GREEN,BLACK;
  12.  
  13. }

枚举对象里面的值都必须是唯一的。

可以通过Enum类型名直接引用该常量,如SexEnum.male,Color.RED.

复杂用法:Java为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象,看个下面的例子:

  1. 1. 代码一 WeekDay.java:
  2.  
  3. public enum WeekDay {
  4.  
  5. Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri(
  6.  
  7. "Friday"), Sat("Saturday"), Sun("Sunday");
  8.  
  9. private final String day;
  10.  
  11. private WeekDay(String day) {
  12.  
  13. this.day = day;
  14.  
  15. }
  16.  
  17. public static void printDay(int i){
  18.  
  19. switch(i){
  20.  
  21. case 1: System.out.println(WeekDay.Mon); break;
  22.  
  23. case 2: System.out.println(WeekDay.Tue);break;
  24.  
  25. case 3: System.out.println(WeekDay.Wed);break;
  26.  
  27. case 4: System.out.println(WeekDay.Thu);break;
  28.  
  29. case 5: System.out.println(WeekDay.Fri);break;
  30.  
  31. case 6: System.out.println(WeekDay.Sat);break;
  32.  
  33. case 7: System.out.println(WeekDay.Sun);break;
  34.  
  35. default:System.out.println("wrong number!");
  36.  
  37. }
  38.  
  39. }
  40.  
  41. public String getDay() {
  42.  
  43. return day;
  44. }
  45. }

1. 代码二 WeekDayTest.java:

  1. public class WeekDayTest {
  2.  
  3. public static void main(String args[]) {
  4.  
  5. for (WeekDay day : WeekDay.values()) {
  6.  
  7. System.out.println(day + "====>" + day.getDay());
  8. }
  9. WeekDay.printDay(5);
  10.  
  11. }
  12.  
  13. }
  14.  
  15. 输出结果为:
  16.  
  17. Mon====>Monday
  18.  
  19. Tue====>Tuesday
  20.  
  21. Wed====>Wednesday
  22.  
  23. Thu====>Thursday
  24.  
  25. Fri====>Friday
  26.  
  27. Sat====>Saturday
  28.  
  29. Sun====>Sunday
  30.  
  31. Fri

2.Java Enum原理
Java Enum类型的语法结构尽管和java类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译可以看到实际上是生成了一个类,该类继承了java.lang.Enum.

WeekDay经过反编译(javap WeekDay命令)之后得到的内容如下(去掉了汇编代码):

  1. public final class WeekDay extends java.lang.Enum{
  2.  
  3. public static final WeekDay Mon;
  4.  
  5. public static final WeekDay Tue;
  6.  
  7. public static final WeekDay Wed;
  8.  
  9. public static final WeekDay Thu;
  10.  
  11. public static final WeekDay Fri;
  12.  
  13. public static final WeekDay Sat;
  14.  
  15. public static final WeekDay Sun;
  16.  
  17. static {};
  18.  
  19. public static void printDay(int);
  20.  
  21. public java.lang.String getDay();
  22.  
  23. public static WeekDay[] values();
  24.  
  25. public static WeekDay valueOf(java.lang.String);
  26.  
  27. }

所以实际上Enum类型就是以Java类来实现的,没有什么新的特点,只不过java编译器帮我们做了语法的解析和编译。完全也可以自己实现。但是既然有这样方便一个东西,当然会去用了。

使用实例:
1》:以Class定义的

  1. public class PCUEnum {
  2.  
  3. public static void main(String[] args) {
  4. System.out
  5. .println(PCUEnum.TaskStatus.get(PCUEnum.TaskStatus.DELETED));
  6. }
  7.  
  8. public enum TaskStatus {
  9. // 1:等待执行 2:正在执行 3:执行完毕 4:执行失败 5:暂停 100:已经删除 101:已经送审
  10. NOTINQUEUE,WAITING, EXECUTING, EXECUTED, FAILED, SUSPEND, DELETED,WAITING_AUDIT;
  11.  
  12. public static int get(TaskStatus s) {
  13. int result = 0;
  14. switch (s) {
  15. case NOTINQUEUE:
  16. result=0;
  17. break;
  18. case WAITING:
  19. result = 1;
  20. break;
  21. case EXECUTING:
  22. result = 2;
  23. break;
  24. case EXECUTED:
  25. result = 3;
  26. break;
  27. case FAILED:
  28. result = 4;
  29. break;
  30. case SUSPEND:
  31. result = 5;
  32. break;
  33. case DELETED:
  34. result = 100;
  35. break;
  36. case WAITING_AUDIT:
  37. result = 101;
  38. break;
  39. }
  40. return result;
  41. }
  42. }
  43.  
  44. }

1.1》:以类为实例:

  1. public class EnumClass {
  2.  
  3. enum explore {
  4. HERE, THERE
  5. }
  6.  
  7. enum WeekDay {
  8. Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri("Friday"), Sat("Saturday"),
  9. Sun("Sunday"), Wro("Wrong day");
  10.  
  11. private String day;
  12.  
  13. WeekDay(String day){
  14. this.day = day;
  15. }
  16.  
  17. public String getDay() {
  18. return day;
  19. }
  20. }
  21.  
  22. public static void main(String[] args) {
  23. System.out.println(EnumClass.explore.HERE);
  24.  
  25. System.out.println("--------");
  26.  
  27. for(EnumClass.WeekDay day : EnumClass.WeekDay.values()) {
  28. System.out.println(day.getDay());
  29. }
  30. }
  31. }

2》:以Enum定义的

  1. package com.zhou.test;
  2.  
  3. public enum TaskEnumStatus {
  4.  
  5. NOTINQUEUE(1),WAITING(2), EXECUTING(3), EXECUTED(4), FAILED(5), SUSPEND(6), DELETED(7),WAITING_AUDIT(8);
  6.  
  7. private int i;
  8.  
  9. private TaskEnumStatus(int i) {
  10.  
  11. this.i = i;
  12.  
  13. }
  14.  
  15. public int getEnumStatus() {
  16.  
  17. return i;
  18.  
  19. }
  20.  
  21. }
  22. public static void main(String[] args) {
  23.  
  24. System.out.println(TaskEnumStatus.NOTINQUEUE + "=" + TaskEnumStatus.NOTINQUEUE.getEnumStatus());
  25.  
  26. }

2.1》:以Enum定义

  1. public enum UserStatusEnum {
  2. DISABLE("disable"),
  3. ENABLE("enable");
  4.  
  5. private String value;
  6.  
  7. UserStatusEnum(String value){
  8. this.value = value;
  9. }
  10.  
  11. public String getValue() {
  12. return value;
  13. }
  14.  
  15. public String toString() {
  16. return value;
  17. }
  18.  
  19. public static void main(String[] args) {
  20. System.out.println(UserStatusEnum.DISABLE);
  21. }
  22. }

2.2》:以Enum定义

  1. public enum NumberEnum {
  2. CONST_FOUR(4), CONST_ENIGHT(8), CONST_NINE(999999);
  3. private final int value;
  4.  
  5. NumberEnum(int value) {
  6. this.value = value;
  7. }
  8.  
  9. public int getValue() {
  10. return value;
  11. }
  12.  
  13. public static void main(String[] args) {
  14. System.out.println(NumberEnum.CONST_ENIGHT.getValue());
  15. }
  16. }

如何使用Java Enum的更多相关文章

  1. java enum

    小谈Java Enum的多态性 博客分类: Java JavaAppleJDKJVMIDEA  Enum+多态,我没说错,不过Enum是不可以被继承的,也不可以继承自别人,只是能实现接口而已,何谈多态 ...

  2. Java Enum用法详解

    Java Enum用法详解 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举 ...

  3. (转)java enum枚举

    转载自: 原理:http://singleant.iteye.com/blog/686349 应用:http://www.cnblogs.com/happyPawpaw/archive/2013/04 ...

  4. java enum naming rules & Pascal case, Camel case, Uppercase

    java enum naming rules Constant & all Capital Case https://stackoverflow.com/questions/3069743/c ...

  5. Java Enum的多态性

    转载自:http://pf-miles.iteye.com/blog/187155 Enum+多态,我没说错,不过Enum是不可以被继承的,也不可以继承自别人,只是能实现接口而已,何谈多态?不过还是先 ...

  6. The Java Enum: A Singleton Pattern [reproduced]

    The singleton pattern restricts the instantiation of a class to one object. In Java, to enforce this ...

  7. 【转】Java enum的用法详解

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  8. Java enum的用法详解[转]

    Ref:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html 用法一:常量 在JDK1.5 之前,我们定义常量都是: p ...

  9. Java enum的用法详解

    (转自:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html) 用法一:常量 在JDK1.5 之前,我们定义常量都是: ...

随机推荐

  1. 20145310《网络对抗》注入shellcode及Return-to-libc

    Shellcode注入 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址. ...

  2. vijos & codevs 能量项链 - 动态规划

    描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于 ...

  3. linux下kermit工具的使用

    1.环境: ubuntu16.04 2.背景: 想更换下位机内核 3.使用kermit进行串口传输 举例:传输文件到下位机 2.1首先进入下位机的uboot 2.2 使用uboot自带的命令从串口接收 ...

  4. P2709 小B的询问

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  5. MacBook PRO蓝牙无法搜索设备

    背景 经常把MacBook合上盖子就塞进包里,用时打开盖子就继续操作,偶尔会出现刚刚还在用的罗技蓝牙鼠标,重新打开笔记本后就连接不上了,而且也无法搜索到周边的蓝牙设备. 解决方案 快捷键:Option ...

  6. Java8新特性:Function接口和Lambda表达式参考

    Lambda基本:https://blog.csdn.net/wargon/article/details/80656575 https://www.cnblogs.com/hyyq/p/742566 ...

  7. Unity3D学习笔记(二十):Rect、Canvas、Toggle、Slider、ScrollBar

      Rect Transform(锚点):图片中心的四个点,界面以雪花形式显示 当四个点在一起的时候组成锚点,当四个点分开的时候组成锚框(合则锚点,分则锚框) Anchors: ----Min x:控 ...

  8. orm框架综合

    一, 目前ORM框架的产品非常之多,除了个大公司.组织的产品外,其他一些小团队也在推出自己的ORM框架.目前流行的ORM框架有如下这些产品: (1)Enitiy EJB:Enitiy EJB实际上也是 ...

  9. javaweb项目运行时生成的Servers项目作用

    在javaweb项目中,看到有一个Servers的项目,发现每新增一个项目,就会在Servers项目中新生成一些对应的项目文件. 如图所示: 每个项目都有对应的文件.文件的结构图如下: 解释一:Ser ...

  10. C++课程上 有关“指针” 的小结

    上完了C++的第二节课以后,觉得应该对这个内容进行一个小结,巩固知识点,并对我的心情进行了一个侧面烘托... 开始上课的老师: 正在上课的我: 上去敲代码的我: 过程是这样的: 下来的我: 非常的尴尬 ...