枚举的一些特殊用法

定义一个基本的枚举类型
复制代码
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 @   曹伟666  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示