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关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...
随机推荐
- css三角形文本框
<style type="text/css"> .triangle{/* 三角形图片位置 */ background-image: url(img/traintop.p ...
- Vue3 Vite3 状态管理 pinia 基本使用、持久化、在路由守卫中的使用
在<基于 vite 创建 vue3 项目>一文中整合了 pinia,有不少伙伴不知道 pinia 是什么,本文简单介绍 pinia.主要包括三方面: pinia 的基本用法,在<基于 ...
- .NET MAUI 社区工具包 1.3版本发布
2022 年 10 月 4 日,微软发布了 .NET MAUI 社区工具包的 1.3 版,具体参见微软官方博客:https://devblogs.microsoft.com/dotnet/announ ...
- 通过netty把百度地图API获取的地理位置从Android端发送到Java服务器端
本篇记录我在实现时的思考过程,写给之后可能遇到困难的我自己也给到需要帮助的人. 写的比较浅显,见谅. 在写项目代码的时候,需要把Android端的位置信息传输到服务器端,通过Netty达到连续传输的效 ...
- 一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.怎么处理慢查询 2.ACID靠什么保证的 3.什么是MVCC 4.mysql主从同步原理 5.简述Myisam和inn ...
- NLP之基于词嵌入(WordVec)的嵌入矩阵生成并可视化
词嵌入 @ 目录 词嵌入 1.理论 1.1 为什么使用词嵌入? 1.2 词嵌入的类比推理 1.3 学习词嵌入 1.4 Word2Vec & Skip-Gram(跳字模型) 1.5 分级& ...
- LcdTools如何自定义读写PX01 SSD2828寄存器
LcdToos打开相应的工程文件,连接PX01并开启点亮屏使LcdTools开关处于开启状态. 切到"测试设置"栏,在"Bridge控制"栏,在"Ad ...
- 44.drf缓存
DRF原有缓存 Django缓存.配置:https://www.cnblogs.com/Mickey-7/p/15792083.html Django为基于类的视图提供了一个 method_dec ...
- 在FreeSQL中实现「触发器」和软删除功能
前言 最近做新项目,技术栈 AspNetCore + FreeSQL 这个ORM真的好用,文档也很完善,这里记录一下两个有关「触发器」的功能实现 修改实体时记录更新时间 模型代码 我的模型都是基于这个 ...
- 基于LZO的高性能无损数据解压缩IP
LZOAccel-D LZO Data Decompression Core/无损数据解压缩IP Core LZOAccel-D是一个无损数据解压缩引擎的FPGA硬件实现,兼容LZO 2.10标准. ...