Java中的枚举类型

enum关键字是一个看似很小的特性。使用这个关键字,我们可以创建一个枚举类型。

事实上,在使用enum关键字创建新的枚举类型时,其实是创建了一个java.lang.Enum 类的子类。枚举中每个指定的值都可以看做是该类的一个实例。

不过我们并不需要在意枚举的本质,只需要将它当做一种创建数据类型的方式,然后可以将获得的类型直接使用即可。


在项目开发过程中,我们经常需会用到一些常量,比如某个属性的一组可能值等。我们不建议在程序中直接判断常量的值(这样容易出错,而且需要开发人员记住每个常量的精确值)。可以使用枚举类型来保存一组不变的值。

public enum State{
    ACTIVE, CLOSED
}

枚举还有一个非常实用的特性,即应用在switch语句中。这使程序的可读性大大提高。

State currentState=State.ACTIVE;  
switch (currentState) { 
    case ACTIVE: 
        //blabla
        break; 
    case CLOSED: 
        //blabla 
        break; 
} 

我们可以在枚举类中添加各种变量和方法,或者覆盖一个方法(比如toString())。

public enum State{
    ACTIVE("Active",1), CLOSED("Closed",0);
    //成员变量、构造方法、get/set方法、覆盖方法等    
}  

EnumMap 和 EnumSet这两个类使我们可以更加方便的处理枚举类型。

EnumMap 类是 java.util.Map 接口的一个特殊实现,该接口中的key是一个枚举类型。

Map<State, Integer> map = new EnumMap<State, Integer>(State.class);
map.put(State.ACTIVE, 1);

EnumSet 类则实现了 java.util.Set 接口,该接口保存了一种枚举类型的值的集合,我们可以使用它来保存一组特性/属性值。EnumSet使我们可以向操作其他Set对象一样操作一组枚举。

你可能感兴趣的:(java,Integer)