Java项目中枚举定义以及使用

什么是枚举?

最近写新项目!有很多数据字典常量需要定义和使用、就顺便记录一下、什么是枚举类呢?就是用enum修饰是一种Java特殊的类,枚举是class、底层是继承了java.lang.Enum类的实体类、使用枚举可以很方便的定义数据常量、方便清晰我们使用

为什么需要枚举类?

下面就举例说明一下吧

1)出于类型安全考虑,没用枚举类之前,常用静态常量来表示。 比如对于性别的表示:

public static final int WOMAN = 0;public static final int MAN = 1;复制代码

这种性别定义实际上是一个整数数据类型。首先,这些变量可用于加减运算。当然我们很少这样干 第二,含义不明确。我们调试的时候,最初将“男”输出到,结果为1。因此,我们必须在前面寻找0的含义,尤其是当我们查看其他人的代码时。会看不懂、定义枚举类在类里面进行详细说明这样的话就能清楚的知道含义。

2) 代码更优雅

在项目大一点当中,可以使用数百个静态常量。如果它们都写在一个文件类里面的话,很容易造成命名混乱,程序也很难读取。

3) 枚举类可以帮助我们定义所需的类型

枚举易于记忆和使用,相当于一个接口。使用时,只需封装内部数据类型并限制数据字段。此外,可以为不同的枚举变量调用不同的处理方法(这可以通过实现枚举类的抽象方法来实现)。

枚举类的定义和使用

下面就定义一个试题类型的枚举类吧

/** * 试题类型 枚举类; 0 填空题、1 判断 题、2 单选题、3 多选题、4 简答题、5 问答题、6 论述题、7 计算题、8 画图题、9 其他题 * @author lyy * @date 2022/05/23 */public enum TopicTypeEnum { /** 填空题 */ FILL_IN_THE_BLANK(0, “填空题”), /** 判断题 */ JUDGE(1, “判断题”), /** 单选题 */ SINGLE_CHOICE(2, “单选题”), /** 多选题 */ MULTIPLE_CHOICE(3, “多选题”), /** 简答题 */ BRIEF_ANSWER(4, “简答题”), /** 问答题 */ QUESTIONS_AND_ANSWERS(5, “问答题”), /** 论述题 */ DISCUSS(6, “论述题”), /** 计算题 */ COMPUTE(7, “计算题”), /** 画图题 */ //最后一个类型必须要用分号结束 DRAW_PICTURE(9, “画图题”); /** 值 */ private final Integer code; /** 名称 */ private final String name; public static TopicTypeEnum getByCode(Integer code) { if (null == code) { return null; } for (TopicTypeEnum status : TopicTypeEnum.values()) { if (status.getCode().intValue() == code.intValue()) { return status; } } return null; } public static TopicTypeEnum getByName(String name) { for (TopicTypeEnum status : TopicTypeEnum.values()) { if (status.getName().equals(name)) { return status; } } return null; } public static List getNameCode() { return Stream.of(TopicTypeEnum.values()) .map(item -> new NameCode(item.getCode(), item.getName())) .collect(Collectors.toList()); } TopicTypeEnum (Integer code, String name) { this.code = code; this.name = name; } public Integer getCode() { return code; } public String getName() { return name; } /** * @author lyy * @date 2022/06/14 * @return 枚举对象数组 */ public static List toList() { List list = new ArrayList(); for (TopicTypeEnum item : TopicTypeEnum.values()) { Map map = new HashMap(); map.put(“code”, item.getCode()); map.put(“name”, item.getName()); list.add(map); } return list; }复制代码

枚举类的常用方法

  • valueOf():返回当前枚举类的name属性,如果没有,则throw new java.lang.IllegalArgumentException()。具体可以查看java.lang.Enum源码。
  • values():返回包括所有枚举变量的数组。
  • toString(),name():返回当前枚举类变量的name属性
  • ordinal():枚举类会给所有的枚举变量一个默认的次序,该次序从0开始,是根据我们定义的次序来排序的。而ordinal()方法就是获取这个次序(或者说下标)。
  • compareTo():返回两个次序相减后的结果。
郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月18日 12:02
下一篇 2022年6月18日 12:02

相关推荐

  • 分享4条发微商朋友圈的方法(微商朋友圈应该怎么发)

    对于微商朋友来说,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底该怎么发呢? 为什么同样是经营一个朋友圈,有的微商看起来逼格满满,实际效果也不错;而有的却动都不动就被屏蔽甚至拉黑…

    2022年11月27日
  • 30个无加盟费的项目(茶颜悦色奶茶店加盟费多少)

    茶颜悦色又爆了,8月18日,茶颜悦色南京门店正式开业,开张不到半小时,门店就人满为患,消费者的购买热情十分高涨,而由于人流量过大造成拥堵,茶颜悦色也不得不暂停营业。 当然,这里面排…

    2022年11月27日
  • 存储过程语法(sql server存储过程语法)

    今天小编给各位分享存储过程语法的知识,其中也会对sql server存储过程语法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! oracle存储过程基本语法…

    2022年11月26日
  • 净利润率越高越好吗(净利润率多少合适)

    一、持续增收不增利,平均净利润率首次跌入个位数 2021年,增收不增利依旧是行业主流。具体来看,大部分企业营业收入呈增长态势,E50企业平均同比增速达到17.3%,但是利润增速则明…

    2022年11月26日
  • 《宝可梦朱紫》梦特性怎么获得?隐藏特性获取方法推荐

    宝可梦朱紫里有很多宝可梦都是拥有梦特性会变强的宝可梦,很多玩家不知道梦特性怎么获得,下面就给大家带来宝可梦朱紫隐藏特性获取方法推荐,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 …

    2022年11月25日
  • 《宝可梦朱紫》奇鲁莉安怎么进化?奇鲁莉安进化方法分享

    宝可梦朱紫中的奇鲁莉安要怎么进化呢?很多玩家都不知道,下面就给大家带来宝可梦朱紫奇鲁莉安进化方法分享,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 奇鲁莉安进化方法分享 奇鲁莉安…

    2022年11月25日
  • 规范透明促PPP高质量发展——16万亿元大市场迎来新规

    近日,财政部印发《关于进一步推动政府和社会资本合作(PPP)规范发展、阳光运行的通知》,从做好项目前期论证、推动项目规范运作、严防隐性债务风险、保障项目阳光运行四个方面进一步规范P…

    2022年11月25日
  • 推荐3种白手起家的赚钱项目(白手起家赚钱项目有哪些)

    如今社会压力非常的大,家有老少要养活,这些都加速了穷人想要创业的欲望,但是创业路总是那么的艰难,资金就是创业的重头戏,所以选择一个低成本又赚钱的项目是大多数人最期望的了,那么有哪些…

    2022年11月25日
  • 闲鱼运营的4大技巧解析(闲鱼运营怎么做)

    熟悉我又来了,上一次写的文章是爆出风水项目的潜规则,但那个项目已经凉凉了。 这一次我是要教一些小白,你们第一次做互联网的建议做的项目之一,这个项目就是闲鱼卖二手物品赚差价了!!! …

    2022年11月24日
  • 1千克等于多少磅

    克,此定义在1958年被美国以及其他英联邦会员国承认换算回来,一千克等于262磅,一磅等于037千克英国在1963年开始,依据度量衡法案的规;1 磅=16 盎司=04536 千克 …

    2022年11月24日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息