5、枚举Enum

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

5、枚举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 getDataMap() {
        Map 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
        }
    }

Original: https://www.cnblogs.com/Iven-L/p/16586628.html
Author: 爱文(Iven)
Title: 5、枚举Enum

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575699/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 2022-8-17 mysql 第三天

    子查询 根据结果集中的行数,子查询可以分为以下几类: [En] According to the number of rows in the result set, subquer…

    数据库 2023年5月24日
    064
  • 一时兴起,写了个寻路代码

    看到一个面试题,是有关寻路的,于是想练练手,自己也写一个。 把地图坐标设计为二维数据,坐标点的值代表不同意义。 先上代码: 1 import java.util.ArrayList…

    数据库 2023年6月14日
    0102
  • pg小工:pgsql的介绍

    支持邮件列表 http://www.postgresql.org/community/lists/ Original: https://www.cnblogs.com/lyhabc…

    数据库 2023年6月9日
    0102
  • 能尽量用数据库代替内存就用吧,减少整天担心内存问题

    游戏不好搞啊,设计的东西,能尽量简单就简单,代码太多判断就写死行了,反正它运行起来是对的就行了。 情形:09:00 昨天发生了很痛苦的一件事情,那就是游戏中data内存同步不到da…

    数据库 2023年6月14日
    067
  • JavaWeb核心篇(2)——Request和Response

    JavaWeb核心篇(2)——Request和Response 上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet…

    数据库 2023年6月14日
    0106
  • 数据库原理四—MySQL日志

    重做日志redo log redo log是重做日志,为InnoDB存储引擎独有。它记录了数据页上的改动。当事务中修改了数据,将会备份存储。当发生数据库服务器宕机或者脏页未写入磁盘…

    数据库 2023年5月24日
    0115
  • MySQL8.0 InnoDB并行执行

    概述 MySQL经过多年的发展已然成为最流行的数据库,广泛用于互联网行业,并逐步向各个传统行业渗透。之所以流行,一方面是其优秀的高并发事务处理的能力,另一方面也得益于MySQL丰富…

    数据库 2023年6月9日
    089
  • 第15章 存储过程与函数

    MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即…

    数据库 2023年6月6日
    092
  • 事务的四大特性

    事务的四大特性 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状…

    数据库 2023年6月11日
    092
  • MySQL DQL 去重教程表代码

    垃圾的撒娇的风景色谱发票为菩萨的搭配覅色谱法配色【】we9rfpqsoedufoiewrun拍摄跑调覅就怕是东风破一坚实的皮肤的胜多负少的 的食品发票速度发票首都非破损的赔付喷水电…

    数据库 2023年5月24日
    0107
  • 控制反转(IOC容器)-Autofac入门

    注意:本文为原创文章,任何形式的转载、引用(包括但不限于以上形式)等,须先征得作者同意,否则一切后果自负。 简介 Autofac 是一个令人着迷的.NET IoC 容器。 它管理类…

    数据库 2023年6月14日
    082
  • MySQL金额数字转为大写中文

    MySQL版本:5.7.34-log通过创建函数的方法,目前可以实现整数金额的转换,网上暂未找到MySQL版本的故自己参照其他数据库版本的改编了一下, 仅供参考!!!使用方法:se…

    数据库 2023年5月24日
    074
  • mysql中group by,having,order by,limit,distinct的用法和简单的的多表查询

    group:组 by:通过 group by :通过….。分组group by列名:通过指定列来分组 一般情况下在题目中出现 “每个” &#82…

    数据库 2023年6月16日
    0116
  • SQL的函数

    MySQL常用的日期函数函数 功能 curdate() 返回当前日期 curtime() 返回当前时间 now() 返回当前日期和时间 year() 获取指定date的年份 mon…

    数据库 2023年6月16日
    0115
  • AQS源码探究之竞争锁资源

    AQS源码探究—竞争锁资源 我们进入ReentrantLock源码中查看其内部类 Sync 对AQS进行扩展公共方法并定义抽象方法的抽象类 FaireSync 实现公平…

    数据库 2023年6月11日
    086
  • Linux–>组管理和权限管理

    在Linux中的每一个用户必须属于一个组,不能独立于组外。 在Linux中每个文件有, 所有者, 所在组, 其他组的概念 查看文件的所有者 ls -ahl 举例: 改变文件所有者 …

    数据库 2023年6月14日
    0138
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球