java枚举

基本使用

//枚举类的定义
public enum Color{
    RED,BLUE,GREEN;//表明只能为三个值其中之一
}

//相关使用
Color colorEnum;
colorEnum  = Color.RED;
//  colorEnum = 2;//会报错
System.out.println(colorEnum);
System.out.println(colorEnum.name());//获取此枚举实例的名称
System.out.println(colorEnum.toString());//与name方法相似
System.out.println(Color.valueOf(Color.class,"RED"));//获取指定枚举类的枚举值
System.out.println(Arrays.toString(Color.values()));//获取所有枚举内容
System.out.println(colorEnum.ordinal());//返回索引值

EnumSet和EnumMap

EnumSet<Color> set = EnumSet.allOf(Color.class);//将一个枚举类全部填充到集合中
    for(Color c:set){
        System.out.println(c);
    }
EnumMap<Color,String> map = new EnumMap<Color, String>(Color.class);
map.put(Color.BLUE,"blue");

带构造方法的枚举

public enum Color {
    RED(10),//会调用构造方法
    GREEN(5),
    BLUE;

    private int color;
    private Color(){
        //只能使用private修饰
        System.out.println("无参构造器");
    }
    private Color(int color){
        this.color = color;
        System.out.println("有参构造器");
    }
}

枚举实现接口,抽象方法

interface info{
    public int getColor();
}
//定义一个枚举类型
public enum Color implements info{
    RED(10){
        @Override
        public String getColor2() {
            return "red";
        }
    },//会调用构造方法
    GREEN(5){
        @Override
        public String getColor2() {
            return "green";
        }
    },
    BLUE{
        @Override
        public String getColor2() {
            return "blue";
        }
    };

    private int color;
    private Color(){
        //只能使用private修饰
        System.out.println("无参构造器");
    }
    private Color(int color){
        this.color = color;
        System.out.println("有参构造器");
    }

    @Override
    public int getColor() {
        return color;
    }

    public abstract String getColor2();
}

枚举类的单例模式

public enum Singleton{
    SINGLETON;
    public void method(){
        System.out.println("method");
    }
}