博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 枚举(enum) 的常见用法和开发规范
阅读量:6902 次
发布时间:2019-06-27

本文共 3680 字,大约阅读时间需要 12 分钟。

JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

用法一:常量

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

 

public enum Color {    RED, GREEN, BLANK, YELLOW  } 

用法二:switch

JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

 

enum Signal {      GREEN, YELLOW, RED  }  public class TrafficLight {      Signal color = Signal.RED;      public void change() {          switch (color) {          case RED:              color = Signal.GREEN;              break;          case YELLOW:              color = Signal.RED;              break;          case GREEN:              color = Signal.YELLOW;              break;          }      }  }  

用法三:向枚举中添加新方法

如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。

 

public enum Color {      RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);      // 成员变量      private String name;      private int index;      // 构造方法      private Color(String name, int index) {          this.name = name;          this.index = index;      }      // 普通方法      public static String getName(int index) {          for (Color c : Color.values()) {              if (c.getIndex() == index) {                  return c.name;              }          }          return null;      }      // get set 方法      public String getName() {          return name;      }      public void setName(String name) {          this.name = name;      }      public int getIndex() {          return index;      }      public void setIndex(int index) {          this.index = index;      }  }  

用法四:覆盖枚举的方法

下面给出一个toString()方法覆盖的例子。

 

public enum Color {      RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);      // 成员变量      private String name;      private int index;      // 构造方法      private Color(String name, int index) {          this.name = name;          this.index = index;      }      //覆盖方法      @Override      public String toString() {          return this.index+"_"+this.name;      }  }  

用法五:实现接口

所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

 

public interface Behaviour {      void print();      String getInfo();  }  public enum Color implements Behaviour{      RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);      // 成员变量      private String name;      private int index;      // 构造方法      private Color(String name, int index) {          this.name = name;          this.index = index;      }  //接口方法      @Override      public String getInfo() {          return this.name;      }      //接口方法      @Override      public void print() {          System.out.println(this.index+":"+this.name);      }  }  

用法六:使用接口组织枚举

public interface Food {      enum Coffee implements Food{          BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO      }      enum Dessert implements Food{          FRUIT, CAKE, GELATO      }  }  /**     * 测试继承接口的枚举的使用(by 大师兄 or 大湿胸。)     */    private static void testImplementsInterface() {        for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {            System.out.print(dessertEnum + "  ");        }        System.out.println();        //我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。        for (CoffeeEnum coffee : CoffeeEnum.values()) {            System.out.print(coffee + "  ");        }        System.out.println();        //搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。        //还有就是个“多态”的功能吧,        Food food = Food.DessertEnum.CAKE;        System.out.println(food);        food = CoffeeEnum.BLACK_COFFEE;        System.out.println(food);    }

运行结果

 

用法七:关于枚举集合的使用

java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

阿里巴巴Java开发手册关于枚举的规范

 

转载地址:http://ycpdl.baihongyu.com/

你可能感兴趣的文章
qt信号和槽
查看>>
第二章
查看>>
【Beta阶段】第六次Scrum Meeting
查看>>
nginx.conf配置文件详解
查看>>
maven使用问题汇总
查看>>
JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
查看>>
beautifulsoup 的children和descandants
查看>>
容器化微服务
查看>>
windows下redis 开机自启动
查看>>
python+selenium自动化测试-定位方式
查看>>
一致性Hash(Consistent Hashing)原理剖析
查看>>
Go并发编程实战 (郝林 著)
查看>>
android handler msg的使用 实现进度条
查看>>
485. 最大连续1的个数
查看>>
Software Testing Homework2
查看>>
企业版打包
查看>>
转载 X5打包服务器
查看>>
[ BZOJ 4668 ] 冷战
查看>>
JavaScript实现jsonp&&CORS
查看>>
Linux下wget方式下载jdk压缩包仅5KB的问题
查看>>