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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现