欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

枚举 7种用法 博客分类: java编程结构  

程序员文章站 2024-03-04 08:06:23
...

 

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

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

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


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