5、枚举Enum
枚举类会隐式的继承Enum类,无法再继承其它类(单继承机制)

一、无实参枚举类型:
1、定义:
/**
* 1、无实参枚举类型
*/
public enum NoParamTypeEnums {
SPRING,
SUMMER,
AUTUMN,
WINTER; NoParamTypeEnums() {
}
}
2、使用:
public static void noParamTypeDemo() {
String season = "SPRING";
System.out.println("无实参枚举查询常量对象名结果:" + NoParamTypeEnums.SPRING.name()); //toPrint->无实参枚举查询常量对象名结果:SPRING
if (season.equals(NoParamTypeEnums.SPRING.toString())) {
System.out.println(season); //toPrint->SPRING
}
}
二、单实参枚举类型:
1、定义:
/**
* 2、单实参枚举类型
*/
public enum OnlyParamTypeEnums {
SPRING("春"),
SUMMER("夏"),
AUTUMN("秋"),
WINTER("冬"); String key; OnlyParamTypeEnums(String key) {
this.key = key;
} //获取枚举的key:春、夏、秋、冬
public String getKey() {
return key;
} //输入枚举的key(春、夏、秋、冬),获取对应的常量对象名(SPRING、SUMMER、AUTUMN、WINTER)
public static String getKeyObjectName(String key) {
String keyName = null;
for (int i = 0; i < OnlyParamTypeEnums.values().length; i++) {
if (key.equals(OnlyParamTypeEnums.values()[i].getKey())) {
keyName = OnlyParamTypeEnums.values()[i].name();
break;
}
}
return keyName;
}
}
2、使用:
public static void onlyParamTypeDemo() {
String season = "春";
System.out.println("单实参枚举查询key结果:" + OnlyParamTypeEnums.SPRING.getKey()); //toPrint->单实参枚举查询key结果:春
System.out.println("单实参枚举查询常量对象名结果:" + OnlyParamTypeEnums.SPRING.name()); //toPrint->单实参枚举查询常量对象名结果:SPRING
System.out.println("单实参枚举根据key查询常量对象名结果:" + OnlyParamTypeEnums.getKeyObjectName(season)); //toPrint->单实参枚举根据key查询常量对象名结果:SPRING
if (season.equals(OnlyParamTypeEnums.SPRING.getKey())) {
System.out.println(season); //toPrint->春
}
}
三、双实参枚举类型:
1、定义:
/**
* 3、双实参枚举类型
*/
public enum DoubleParamTypeEnums {
SPRING("0", "春"),
SUMMER("1", "夏"),
AUTUMN("2", "秋"),
WINTER("3", "冬"); String key;
String value; DoubleParamTypeEnums(String key, String value) {
this.key = key;
this.value = value;
} //获取枚举的key:0、1、2、3
public String getKey() {
return key;
} //输入枚举的value(春、夏、秋、冬),获取枚举的key:0、1、2、3
public static String getKey(String value) {
String keyName = null;
for (int i = 0; i < DoubleParamTypeEnums.values().length; i++) {
if (value.equals(DoubleParamTypeEnums.values()[i].getValue())) {
keyName = DoubleParamTypeEnums.values()[i].getKey();
break;
}
}
return keyName;
} //输入枚举的key(0、1、2、3),获取对应的常量对象名(SPRING、SUMMER、AUTUMN、WINTER)
public static String getKeyObjectName(String key) {
String keyName = null;
for (int i = 0; i < DoubleParamTypeEnums.values().length; i++) {
if (key.equals(DoubleParamTypeEnums.values()[i].getKey())) {
keyName = DoubleParamTypeEnums.values()[i].name();
break;
}
}
return keyName;
} //获取枚举的value:春、夏、秋、冬
public String getValue() {
return value;
} //输入枚举的key(0、1、2、3),获取枚举的value:春、夏、秋、冬
public static String getValue(String key) {
String valueName = null;
for (int i = 0; i < DoubleParamTypeEnums.values().length; i++) {
if (key.equals(DoubleParamTypeEnums.values()[i].getKey())) {
valueName = DoubleParamTypeEnums.values()[i].getValue();
break;
}
}
return valueName;
} //输入枚举的key(春、夏、秋、冬),获取对应的常量对象名(SPRING、SUMMER、AUTUMN、WINTER)
public static String getValueObjectName(String value) {
String keyName = null;
for (int i = 0; i < DoubleParamTypeEnums.values().length; i++) {
if (value.equals(DoubleParamTypeEnums.values()[i].getValue())) {
keyName = DoubleParamTypeEnums.values()[i].name();
break;
}
}
return keyName;
} //获取双实参枚举Map集合
public static Map<String, String> getDataMap() {
Map<String, String> dataMap = new HashMap<>();
for (int i = 0; i < DoubleParamTypeEnums.values().length; i++) {
String key = DoubleParamTypeEnums.values()[i].getKey();
String value = DoubleParamTypeEnums.values()[i].getValue();
dataMap.put(key, value);
}
return dataMap;
}
}
2、使用:
public static void doubleParamTypeDemo() {
String seasonKey = "0";
String seasonValue = "春";
System.out.println("双实参枚举查询key结果:" + DoubleParamTypeEnums.SPRING.getKey()); //toPrint->双实参枚举查询key结果:0
System.out.println("双实参枚举根据value查询key结果:" + DoubleParamTypeEnums.getKey(seasonValue)); //toPrint->双实参枚举根据value查询key结果:0
System.out.println("双实参枚举根据key查询常量对象名结果:" + DoubleParamTypeEnums.getKeyObjectName(seasonKey)); //toPrint->双实参枚举根据key查询常量对象名结果:SPRING
System.out.println("双实参枚举查询value结果:" + DoubleParamTypeEnums.SPRING.getValue()); //toPrint->双实参枚举查询value结果:春
System.out.println("双实参枚举根据key查询value结果:" + DoubleParamTypeEnums.getValue(seasonKey)); //toPrint->双实参枚举根据key查询value结果:春
System.out.println("双实参枚举根据value查询常量对象名结果:" + DoubleParamTypeEnums.getValueObjectName(seasonValue)); //toPrint->双实参枚举根据value查询常量对象名结果:SPRING
System.out.println("双实参枚举Map集合结果:" + DoubleParamTypeEnums.getDataMap()); //toPrint->双实参枚举Map集合结果:{0=春, 1=夏, 2=秋, 3=冬}
System.out.println("双实参枚举Map集合查询value结果:" + DoubleParamTypeEnums.getDataMap().get(seasonKey)); //toPrint->双实参枚举Map集合查询value结果:春
if (seasonKey.equals(DoubleParamTypeEnums.SPRING.getKey())) {
System.out.println(seasonKey); //toPrint->0
}
}
5、枚举Enum的更多相关文章
- MySQL字段之集合(set)枚举(enum)
MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it 分类:MySQL 集合 SET mysql> create table jihe(f1 ...
- 枚举 enum
typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...
- 枚举enum学习小记
参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 ...
- Java 枚举(enum) 详解7种常见的用法
Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...
- Python 枚举 enum
Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...
- 【转】结构struct 联合Union和枚举Enum的细节讨论
结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...
- 枚举Enum和常量0之间的恩怨
1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...
- C++和Java中枚举enum的用法
在C++和java中都有枚举enum这个关键字,但是它们之间又不太一样.对于C++来说,枚举是一系列命名了的整型常量,而且从枚举值转化为对应的整型值是在内部进行的.而对于Java来说,枚举更像一个类的 ...
- 【转】枚举enum学习小记
原帖: http://hi.baidu.com/yuleishou/item/caacae872190031ec216272f 表示在vs2008下实验了一下,有些东西和原帖的还是不一样的,都贴在这里 ...
- 枚举类型与位域枚举Enum
一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...
随机推荐
- 洛谷P1120 小木棍 (搜索+剪枝)
搜索的经典题. 我们要求木根的最小长度,就要是木根的数量尽可能多,可以发现木根的长度一定可以整除所有小木棒的总长度,从小到大枚举这个可能的长度,第一次有解的就是答案. 关心的状态:当前正在拼哪根木棍, ...
- .Net Framework中的AppDomain.AssemblyResolve事件的常见用法、问题,以及解决办法
一.简述 本文简要的介绍.NET Framework中System.AppDomain.AssemblyResolve事件的用法.使用注意事项,以及复杂场景下AssemblyResolve事件的污染问 ...
- Filter 筛选器(三)之 自定义一个启动事务的 TransactionScopeFilter
如果一个方法内有多个写入操作,比如 写入A表,然后用A表的自增id 去写入B表,假如A表写入成功,但B表因为某种原因写入失败!(这就导致A表写入了脏数据) 这时候 我们可以自定义 一个Filter 进 ...
- 12.MongoDB系列之副本集管理
1. 控制成员状态 1.1 把主节点变为从节点 rs.stepDown() 1.2 阻止选举 如果需要对主节点维护,不想期间其他从节点选举为主节点,则可以 rs.freeze(10000) 维护完成后 ...
- 成功解决:snippet设置的开机自启没有效果
1.问题描述 勾选开机启动后.没有效果.每次开机都要我重新找到对应的安装目录.双击运行开启 2.解决方法 将snipaste的快捷方式放到开机启动目录下 C:\Users\Administrator\ ...
- __g is not defined
新手小白学习小程序开发遇到的问题以及解决方法 文章目录 1.出现的问题 2.解决的方法 1.出现的问题 2.解决的方法 删除app.json中的 "lazyCodeLoading" ...
- Doris开发手记4:倍速性能提升,向量化导入的性能调优实践
最近居家中,对自己之前做的一些工作进行总结.正好有Doris社区的小伙伴吐槽向量化的导入性能表现并不是很理想,就借这个机会对之前开发的向量化导入的工作进行了性能调优,取得了不错的优化效果.借用本篇手记 ...
- grpc中的拦截器
0.1.索引 https://waterflow.link/articles/1665853719750 当我们编写 HTTP 应用程序时,您可以使用 HTTP 中间件包装特定于路由的应用程序处理程序 ...
- 14.-F对象和Q对象
一.F对象 一个F对象代表数据库中某条记录的字段的信息 作用 通常是对数据库中的字段值在不获取的情况下进行操作 用于属性(字段)之间的比较 语法: from django.db.models im ...
- 网络安全(一):信息收集之玩转nmap(理论篇)
更新时间 2022年09月06日16:20:10 完成nmap介绍,目标选择,主机发现部分 2022年10月28日21:19:20 完成最基本的内容,端口扫描,版本和系统探测,安全其他等 打算的更新计 ...