Java 枚举使用总结
目录
1、枚举基础
1.1、创建枚举最简单的方式
1.2、简单使用
2、枚举的构造方法
2.1、使用注释方式说明
2.2、使用构造方法
2.3、使用带有构造器的枚举
3、就这些了?
3.1、需求
3.2、使用Map实现
3.3、枚举结合Map
1、枚举基础
1.1、创建枚举最简单的方式
package cn.ganlixin.demo.enums; /**
* 描述: 季节枚举类
*/
public enum SeasonEnum { // 枚举值之间使用逗号隔开,而不是分号
SPRING, SUMMER, AUTUMN, WINNER;
}
1.2、简单使用
@Test
public void testUseSeasonEnum() {
System.out.println(SeasonEnum.AUTUMN); // AUTUMN // 获取枚举类中定义的所有枚举项(每一项都是枚举,而不是字符串)
final SeasonEnum[] values = SeasonEnum.values();
for (SeasonEnum season : values) {
System.out.print(season +" "); // SPRING SUMMER AUTUMN WINTER
} // 根据传入的字符串,获取与字符串同名的枚举项(如果没有字符串同名的枚举项,则会报错)
final SeasonEnum winter = SeasonEnum.valueOf("WINTER");
System.out.println(winter); // WINTER // 枚举项的比较
System.out.println(SeasonEnum.WINTER == SeasonEnum.WINTER); // true
// 字符串不能直接与枚举进行比较
//System.out.println("WINTER" == SeasonEnum.WINTER);
// System.out.println(Objects.equals("WINTER", SeasonEnum.WINTER)); // false
}
2、枚举的构造方法
2.1、使用注释方式说明
虽然可以通过给枚举项增加注释的方式来表达枚举项的含义,但是对于打包发布后,注释是删掉的,这时就不好了
package cn.ganlixin.demo.enums; /**
* 描述: 季节枚举类
*/
public enum SeasonEnum { // 枚举值之间使用逗号隔开,使用注释的方式说明枚举项的含义
SPRING, // 春天
SUMMER, // 夏天
AUTUMN, // 秋天
WINTER; // 冬天
}
2.2、使用构造方法
package cn.ganlixin.demo.enums; /**
* 描述: 季节枚举类
*/
public enum SeasonEnum { // 枚举值定义。枚举值之间使用逗号隔开,使用构造方法设置
SPRING("春天"),
SUMMER("夏天"),
AUTUMN("秋天"),
WINTER("冬天"); // 枚举项的说明(比如注释"春天")
String description;
// 还可以自己加其他字段 // 创建一个构造方法
SeasonEnum(String description) {
this.description = description;
} // 获取枚举项描述
public String getDescription() {
return description;
} // 一般不建议提供setter,因为枚举类不应该被改变(包括信息描述)
// public void setDescription(String description) {
// this.description = description;
// }
}
需要注意的是,上面SeasonEnum的各部分代码顺序不能更改,也就是说枚举项定义必须在其他代码之前(包括构造方法、属性、getter)。
2.3、使用带有构造器的枚举
@Test
public void testSeasonEnumWithConstructor() {
System.out.println(SeasonEnum.AUTUMN); // AUTUMN // 每一个枚举项都默认包含name方法,返回枚举项的字符串类型
System.out.println(SeasonEnum.AUTUMN.name()); // AUTUMN // 调用方法获取枚举项的描述
System.out.println(SeasonEnum.AUTUMN.getDescription()); // 秋天
}
3、就这些了?
看完上面的定义和使用方式,你觉得枚举就这些了吗?的确,枚举就这内容,但是在真实开发工作中,还是不够的。
3.1、需求1
比如,我想根据一个字符串,获取枚举类中同名的枚举项,但是返回的是枚举项的描述:
伪代码如下:
String item = "xxx"; // 传入字符串获取对应的描述,而不是枚举项
String desctiption = SeasonEnum.getDescription(item);
3.2、使用Map实现
一个简单的方式就是通过使用不可变Map来实现,这里就不掩饰了
3.3、枚举结合Map
可以使用枚举和Map结合的方式,既保留了枚举的功能,也可以使用Map的功能
package cn.ganlixin.demo.enums; import java.util.HashMap;
import java.util.Map; /**
* 描述: 季节枚举类
*/
public enum SeasonEnum { // 枚举值之间使用逗号隔开,使用构造方法设置
SPRING("春天"),
SUMMER("夏天"),
AUTUMN("秋天"),
WINTER("冬天"); // 用来存枚举项(字符串类型)与description的对应关系
private static final Map<String, String> SeasonEnumMap = new HashMap<>(); static {
// 将枚举项的名称与描述存入map
for (SeasonEnum season : values()) {
SeasonEnumMap.put(season.name(), season.getDescription());
}
} // 枚举项的说明(比如注释"春天")
String description; // 创建一个构造方法
SeasonEnum(String description) {
this.description = description;
} // 获取枚举项描述
public String getDescription() {
return description;
} /**
* 根据字符串类型的枚举项,获取描述
* @param season
* @return
*/
public static String fromSeasonName(String season) {
return SeasonEnumMap.get(season);
}
}
使用示例
@Test
public void testEnumWithMap() {
System.out.println(SeasonEnum.fromSeasonName("WINTER")); // 冬天 System.out.println(SeasonEnum.fromSeasonName("NotExists")); // null
}
Java 枚举使用总结的更多相关文章
- Java 枚举用法详解
概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性. 在Java中,被 enum 关键字修饰的类型就是枚举类型.形式如下: enum Color { RED, GR ...
- java 枚举类型分析
最近做android开发,需要用到枚举值,这样可以连续赋值,我按之前c++那样书写,如下所示: public enum ColorSelect { RED_BAGE = 0, GREEN_BAGE, ...
- 【转】java枚举类型enum的使用
原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...
- 【转】Java 枚举7常见种用法
原文网址:http://softbeta.iteye.com/blog/1185573 Java 枚举7常见种用法 博客分类: java java枚举enmu 原创地址:http://blog.li ...
- 【转】掌握java枚举类型(enum type)
原文网址:http://iaiai.iteye.com/blog/1843553 1 背景 在java语言中还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具有int常量.之前我们通常利用 ...
- 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)
java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...
- Java枚举类使用
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...
- Java 枚举类型简介
目录 Java 枚举示例 Java 枚举构造函数 枚举类型是用于定义常量集合的特殊类型,更确切的说,JAVA枚举类型是一种特殊的 java 类.枚举类型可以包含常量.方法等.在 java5 中添加了 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- 使用javap进行反编译Java枚举
这是一个枚举类Day.java public enum Day { MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY(" ...
随机推荐
- 详解Linux系统中10个最危险的命令
概述 大多数的朋友都是主要用的windows系统,基本用鼠标就可以完成所有的操作,但是在Linux系统中很多都是键盘+命令操作电脑的,Linux命令行使用很有趣,但有时候也很危险,尤其是在你不确定你自 ...
- Linux用户组和权限管理
Linux用户组和权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux的安全模型 1>.安全3A 这并不是Linux特有的概念,在很多领域都有3A的概念 ...
- 移动平台前端开发总结(ios,Android)
首先我们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用 <meta content="width=device-width; ...
- Laravel —— batch 实现
很多项目中会用到自动执行脚本的功能, 例如,自动统计上个月的注册用户,定时生成 csv 文件并邮箱发送给客户等等. Laravel 中的任务调度,可实现定时任务, 结合自定义 artisan 命令,即 ...
- python完成数组格式的请求参数的加密计算
#输入 '''order_id:31489 join_course[0][join_tel]:13130999882 join_course[0][join_name]:任学雨 join_course ...
- 使用idea 调试java -jar xxx.jar方式启动
今日思语:希望是什么?希望就是 你还在挣扎中... idea是一个功能强大的java开发工具,可以很方便的帮助开发人员进行开发工作. 1.有时我们通过使用java -jar xxx.jar方式启动可执 ...
- MongoDB 4.2 新特性解读 (转载)
MongoDB World 2019 上发布新版本 MongoDB 4.2 Beta,包含多项数据库新特性,本文尝试从技术角度解读. Full Text Search MongoDB 4.2 之前,全 ...
- GoCN每日新闻(2019-10-04)
GoCN每日新闻(2019-10-04) 国庆专辑:GopherChina祝大家国庆节快乐 GoCN每日新闻(2019-10-04) 1. Go提议流程:代表 https://research.swt ...
- 计蒜客——Reversion Count
Reversion Count 解析:题目数字的长度最大为 99,因此使用字符串处理,那么必然这些数存在某些规律.对于数 a (XYZW) 和数 b (WZYX),原式 = (1000X + 100Y ...
- mysql 创建分组
mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...