枚举类会隐式的继承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的更多相关文章

  1. MySQL字段之集合(set)枚举(enum)

    MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23) 标签:it  分类:MySQL 集合 SET mysql> create table jihe(f1 ...

  2. 枚举 enum

    typedef enum : NSUInteger { <#MyEnumValueA#>, <#MyEnumValueB#>, <#MyEnumValueC#>, ...

  3. 枚举enum学习小记

    参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 ...

  4. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  5. Python 枚举 enum

    Python 枚举 enum enum 标准模块在 3.4 版本才可以使用,3.3 以下版本需要独立安装:https://pypi.python.org/pypi/enum34#downloads,官 ...

  6. 【转】结构struct 联合Union和枚举Enum的细节讨论

    结构struct 联合Union和枚举Enum的细节讨论 联合(Union)是一种构造数据类型,它提供了一种使不同类型数据类型成员之间共享存储空间的方法,同时可以实现不同类型数据成员之间的自动类型转换 ...

  7. 枚举Enum和常量0之间的恩怨

    1,任何为0的常量表达式都能隐式的转换成枚举Enum. 对于这一点,在程序中没少吃苦头.特别是对于函数重载的情况,往往让人一头雾水. 看看下面的代码(摘自MSDN),你能猜到输出吗? public e ...

  8. C++和Java中枚举enum的用法

    在C++和java中都有枚举enum这个关键字,但是它们之间又不太一样.对于C++来说,枚举是一系列命名了的整型常量,而且从枚举值转化为对应的整型值是在内部进行的.而对于Java来说,枚举更像一个类的 ...

  9. 【转】枚举enum学习小记

    原帖: http://hi.baidu.com/yuleishou/item/caacae872190031ec216272f 表示在vs2008下实验了一下,有些东西和原帖的还是不一样的,都贴在这里 ...

  10. 枚举类型与位域枚举Enum

    一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...

随机推荐

  1. 在PE文件中简单注入代码,实现在启动前弹窗

    获得的新知识: 1.kernel32.dll,user32.dll,ntdll.dll等一些dll在同一个PC环境下的映射到虚拟内存基址是一样的. 2.在win8以上系统上,更改PE文件的入口点要大于 ...

  2. 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段

    1. 问题:怎么给线上表加字段? 工作中最常遇到的问题,怎么给线上频繁使用的大表添加字段? 比如:给下面的用户表(user)添加年龄(age)字段. CREATE TABLE `user` ( `id ...

  3. 2. 单主机 Elasticsearch 双节点或多节点集群环境部署

    我已经买了一年的腾讯云轻量级服务器,并且安装好了ES,也做了一些系统配置,比如 修改vm.max_map_count.修改文件描述符数量 同时,也用ES安装目录下的 bin/elasticsearch ...

  4. javaweb 导出文件名乱码的问题解决方案

    fileName = new String(fileName.getBytes("ISO8859-1"), "UTF-8"); 或者 String finalF ...

  5. react.js+easyui 做一个简单的商品表

    效果图:     import React from 'react'; import { Form, FormField, Layout,DataList,LayoutPanel,Panel, Lab ...

  6. 累加和为 K 的子数组问题

    累加和为 K 的子数组问题 作者:Grey 原文地址: 博客园:累加和为 K 的子数组问题 CSDN:累加和为 K 的子数组问题 题目说明 数组全为正数,且每个数各不相同,求累加和为K的子数组组合有哪 ...

  7. 深入理解独占锁ReentrantLock类锁

    ReentrantLock介绍 [1]ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程 ...

  8. 1.轮询、长轮询、websocket简介

    一.轮询 前端每隔固定时间向后台发送一次请求,询问服务器是否有新数据   缺点: 延迟,需要固定的轮询时间,不一定是实时数据 大量耗费服务器内存和宽带资源,因为不停的请求服务器,很多时候 并没有新的数 ...

  9. Spring Retry 重试

    重试的使用场景比较多,比如调用远程服务时,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次.用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有.话不多说 ...

  10. php注解使用示例

    今天看到php注解的介绍文章很感兴趣,动手实际试了试挺好玩,写这篇文章记录下 php从8开始支持原生注解功能了,我们可以写个小的例子看看注解怎么玩.   先确定我们的任务目标 1.编写一个注解类rou ...