Java枚举

枚举定义
枚举类型(enum type)是指由一组固定的常量组成合法的类型。Java中由关键字enum来定义一个枚举类型。下面就是java枚举类型的定义。

public enum Season {
    SPRING, SUMMER, AUTUMN, WINER;
}
Java定义枚举类型的语句很简约。它有以下特点:

使用关键字enum
类型名称,比如这里的Season
一串允许的值,比如上面定义的春夏秋冬四季
枚举可以单独定义在一个文件中,也可以嵌在其它Java类中
枚举可以实现一个或多个接口(Interface)
可以定义新的变量和方法
重写上面的枚举方式
下面是一个很规范的枚举类型

public enum Season {
    SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4);
 
    private int code;
    private Season(int code){
        this.code = code;
    }
 
    public int getCode(){
        return code;
    }
}
public class UseSeason {
    /**
     * 将英文的季节转换成中文季节
     * @param season
     * @return
     */
    public String getChineseSeason(Season season){
        StringBuffer result = new StringBuffer();
        switch(season){
            case SPRING :
                result.append("[中文:春天,枚举常量:" + season.name() + ",数据:" + season.getCode() + "]");
                break;
            case AUTUMN :
                result.append("[中文:秋天,枚举常量:" + season.name() + ",数据:" + season.getCode() + "]");
                break;
            case SUMMER : 
                result.append("[中文:夏天,枚举常量:" + season.name() + ",数据:" + season.getCode() + "]");
                break;
            case WINTER :
                result.append("[中文:冬天,枚举常量:" + season.name() + ",数据:" + season.getCode() + "]");
                break;
            default :
                result.append("地球没有的季节 " + season.name());
                break;
        }
        return result.toString();
    }
 
    public void doSomething(){
        for(Season s : Season.values()){
            System.out.println(getChineseSeason(s));//这是正常的场景
        }
        //System.out.println(getChineseSeason(5));
        //此处已经是编译不通过了,这就保证了类型安全
    }
 
    public static void main(String[] arg){
        UseSeason useSeason = new UseSeason();
        useSeason.doSomething();
    }
}
Enum类的常用方法
方法名称    描述
values()    以数组形式返回枚举类型的所有成员
valueOf()    将普通字符串转换为枚举实例
compareTo()    比较两个枚举成员在定义时的顺序
ordinal()    获取枚举成员的索引位置
values() 方法
通过调用枚举类型实例的 values() 方法可以将枚举的所有成员以数组形式返回,也可以通过该方法获取枚举类型的成员。

下面的示例创建一个包含 3 个成员的枚举类型 Signal,然后调用 values() 方法输出这些成员。


public enum Signal {
    
        //定义一个枚举类型
        GREEN,YELLOW,RED;
 
    public static void main(String[] args)
    {
        for(int i=0;i         {
            System.out.println("枚举成员:"+Signal.values()[i]);
        }
    }
 
}
结果

//枚举成员:GREEN
//枚举成员:YELLOW
//枚举成员:RED
valueOf方法
通过字符串获取单个枚举对象

 
public enum Signal {
 
        //定义一个枚举类型
        GREEN,YELLOW,RED;
 
        public static void main(String[] args)
        {
            Signal green = Signal.valueOf("GREEN");
            System.out.println(green);
        }
 
}
结果

//GREEN
ordinal() 方法
通过调用枚举类型实例的 ordinal() 方法可以获取一个成员在枚举中的索引位置。下面的示例创建一个包含 3 个成员的枚举类型 Signal,然后调用 ordinal() 方法输出成员及对应索引位置。

public class TestEnum1
{
    enum Signal
    {
        //定义一个枚举类型
        GREEN,YELLOW,RED;
    }
    public static void main(String[] args)
    {
        for(int i=0;i         {
            System.out.println("索引"+Signal.values()[i].ordinal()+",值:"+Signal.values()[i]);
        }
    }
}
结果

//索引0,值:GREEN
//索引1,值:YELLOW
//索引2,值:RED

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