java中enum的使用

java中的enum是再JDK5.0以后的版本添加的,它不仅仅是一个枚举类型,还包括一些比较好用的操作。

首先是其他语言中枚举类型的一般特性:

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

可以使用for循环遍历

        for (Color c : Color.values()) {  
              System.out.println(c);
            }  

使用集合EnumSet和EnumMap

  EnumSet colorSet = EnumSet.allOf(Color.class);    
        for (Color s : colorSet) {    
            System.out.println(s);    
        }    
   EnumMap colorMap = new EnumMap(Color.class);    
        colorMap.put(Color.RED, "is Red");    
        colorMap.put(Color.YELLOW, "is Yellow");    
        for (Color s : Color.values()) {    
            System.out.println(s.name() + ":" + colorMap.get(s));    
        }    

switch的参数可以使用enum。
enum也是一个类,因此和类一样可以有成员变量和方法(包括构造方法),也可以实现接口,但不能继承(因为已经继承了Enum这个类)。

个人认为最重要的,可以给枚举常量添加方法:

先定义一个abstract方法,然后各个常量都可以实现该方法

public enum Operation {
   PLUS    { double eval(double x, double y) { return x + y; } },
   MINUS   { double eval(double x, double y) { return x - y; } },
   TIMES   { double eval(double x, double y) { return x * y; } },
   DIVIDE { double eval(double x, double y) { return x / y; } };
   abstract double eval(double x, double y);
}


有了这种性质,就可以轻松的以enum实现状态机多路分发了,例如jsoup中确实使用了这种性质来解析xml



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值