java枚举类常用方法

java枚举类是非常常用的类型

下面做一个简单的总结

一、枚举基础

复制代码
public enum FilterType {
    DATE_FILTER,
    TEXT_FILTER,
    SELECT_FILTER;

    
    public static void main(String[] args) {
        //通过下标返回枚举对象
        FilterType[] values = FilterType.values();
        FilterType filterType = values[0];
        System.out.println(filterType);
        //通过枚举对象返回下标
        int index = filterType.ordinal();
        System.out.println(index);
        //通过枚举对象返回名称
        String name = filterType.name();
        System.out.println(name);
        //通过字符串名称返回枚举对象
        FilterType date_filter = FilterType.valueOf("DATE_FILTER");
        System.out.println(date_filter);
    }
}
复制代码

 

二、给枚举类型添加属性

复制代码
public enum ColumnType {
    INT("整型"),
    DOUBLE("浮点型"),
    DATE_YYYY("日期:yyyy"),
    DATE_YYYY_MM("日期:yyyy-MM"),
    DATE_YYYY_MM_DD("日期:yyyy-MM-dd"),
    DATETIME("日期时间"),
    VARCHAR("字符串");

    private final String value;

    ColumnType(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
    

    public static void main(String[] args) {
        String value = ColumnType.INT.getValue();
        System.out.println(value);
     
    }
}
复制代码

三、给枚举添加方法

如果每个枚举对象都需要有不同的行为,可以通过在枚举类中定义抽象方法的形式实现。

这样每个枚举对象都需要实现这个抽象方法

复制代码
public enum TemplateStatus {
    DRAFT(0) {
        void say() {
            System.out.println("草稿");
        }

        ;
    },//草稿
    RELEASE(1) {
        void say() {
            System.out.println("发布");
        }
    };//发布

    private final int value;

    TemplateStatus(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    abstract void say();
}
复制代码

四、枚举Set和枚举Map

因为枚举类不能灵活的添加和删除元素,所以java本身又提供了EnumSet和EnumMap来增强这方面的功能。

复制代码
 //EnumSet可以表示包含不包含,开或关
        EnumSet<ColumnType> columnTypes1 = EnumSet.noneOf(ColumnType.class);
        EnumSet<ColumnType> columnTypes = EnumSet.allOf(ColumnType.class);
        EnumSet<ColumnType> range = EnumSet.range(INT, VARCHAR);
        EnumSet<ColumnType> anInt = EnumSet.of(INT, DOUBLE);
        boolean contains = columnTypes.contains(ColumnType.INT);
        //EnumMap可以实现类似命令模式或策略模式的功能
        EnumMap<ColumnType, String> enumMap = new EnumMap<ColumnType, String>(ColumnType.class);
        enumMap.put(ColumnType.INT,"int");
        String s = enumMap.get(ColumnType.DOUBLE);
复制代码

 

posted @   Mars.wang  阅读(1138)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示