举_枚

1.枚举其实都是隐式的继承自java.lang.Enum。有类型安全性、编译期检查以及可将它用在变量声明中的能力,枚举中的各个实例(值)都是被隐式声明为public static final的,也不能将这些声明手动赋予给实例(值),编译器会自己处理。所以比较Enum实际是比较int型,比String快。

2.实例
enum Color
{
    GREEN, RED, BLUE
}
       int index = Color.GREEN.ordinal();//获取枚举值的下标
        Color[] colors = Color.values();//获取所有的枚举值
        String name = Color.GREEN.name();//获取实例名
        Color aa = Color.valueOf(name);//通过实例名获取枚举实例
        //比较两个枚举的方法一    : 比较方式是比较枚举的ordinal 
        //逻辑表达式方法二   : boolean isEqual = Color.RED == Color.GREEN;
        //枚举支持直接用switch作选择

3.示例
public enum Enums
{
    SIMPLE1
    {
        String getInfo()
        {
            return "aaa";
        }
    },
    SIMPLE2
    {
        String getInfo()
        {
            return "bbb";
        }
    };
    abstract String getInfo();
   
    public static void main(String[] args)
    {
        System.out.println(Enums.SIMPLE1.name());
        for (Enums a : values())
        {
            System.out.println(a.getInfo());
        }
    }
}

public class Enums2
{
    public enum State
    {
        ON, OFF
    }
   
    /**
     * TODO 添加方法注释
     * @param args
     */
    public static void main(String[] args)
    {
        //打印枚举值
        for (State s : State.values())
        {
            System.out.println(s.name());
        }
       
        //枚举与Switch集成
        switch (State.ON)
        {
            case ON:
                System.out.println("开");
                break;
            case OFF:
                System.out.println("关");
                break;
        }
       
        //枚举与Map集成
        EnumMap map = new EnumMap(State.class);
        map.put(State.ON, "开");
        map.put(State.OFF, "关");
        for (State s : State.values())
        {
            System.out.println(s.name() + " " + map.get(s));
        }
    }
}

你可能感兴趣的:(举_枚)