Java学习之枚举

DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。
用法一:常量
在JDK1.5 之前,我们定义常量都是: publi cstatic fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

    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   
   }   
    }   

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值