枚举的一些特殊用法

定义一个基本的枚举类型
public enum Color {
    RED(10), //每一个枚举都是枚举类型的一个实例
    GREEN(20),
    BLUE();
    Color() {} //枚举的构造方法必须是私有的,可以不写默认私有
    private int color;
    Color(int color) {
        this.color = color;
        System.out.println(color);
    }
}

枚举可以实现接口

public interface Info {
    public int getColor();
}
public enum Color implements Info{
    RED(10),
    GREEN(20) ,
    BLUE();
    Color() {}
    private int color;
    Color(int color) {
        this.color = color;
        System.out.println(color);
    }

    @Override
    public int getColor() {
        return color;
    }
}
@Test
    public void test3() {
        System.out.println(Color.RED.getColor());
    }
//

10 //构造方法打印的
20 //构造方法打印的
10 //getColor方法执行结果


枚举可以重写抽象方法

public enum Color implements Info{
    RED(10) {//每个实例单独实现抽象方法
        public String getColor2() {
            return "red";
        }
    },
    GREEN(20) {
        public String getColor2() {
            return "green";
        }
    },
    BLUE() {
        public String getColor2() {
            return "blue";
        }
    };
    Color() {}
    private int color;
    Color(int color) {
        this.color = color;
        System.out.println(color);
    }

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

    public abstract String getColor2();//抽象方法写在枚举类中
}
@Test
    public void test3() {
        System.out.println(Color.RED.getColor2());
    }
//red

枚举的一些基本属性

@Test
    public void test1() {
        color = Color.RED;
        System.out.println(color); 
        System.out.println(color.name()); 
        System.out.println(color.ordinal());//当前枚举在枚举类中的位置
        System.out.println(color.toString());

        Color[] values = Color.values();
        System.out.println(Arrays.toString(values));
    }
//

RED
RED
0
RED
[RED, GREEN, BLUE]


枚举中的集合

@Test
    public void test2() {
        EnumSet<Color> set = EnumSet.allOf(Color.class);//枚举set
        set.forEach(item -> {
            System.out.println(item);
        });

        EnumMap<Color, String> enumMap = new EnumMap<Color, String>(Color.class);//枚举map
        enumMap.put(Color.RED, "red");
        enumMap.put(Color.BLUE, "blue");
        enumMap.put(Color.GREEN, "green");
        enumMap.forEach((k,v) -> {
            System.out.println(k +"->" +v);
        });
    }
//

RED
GREEN
BLUE
RED->red
GREEN->green
BLUE->blue


 

posted @ 2023-03-12 22:20  曹伟666  阅读(16)  评论(0编辑  收藏  举报