当前位置: 首页 > news >正文

如何判断一个枚举值是否存在(Check if an Enum Value Exists in Java)

目录

    • Searching an Enum by Name
    • Searching an Enum by Value
    • Searching an Enum by Integer Value
    • Exceptions Thrown from Search Methods

Searching an Enum by Name

public enum Direction {EAST, WEST, SOUTH, NORTH;public static Direction findByName(String name) {Direction result = null;for (Direction direction : Direction.values()) {if (direction.name().equalsIgnoreCase(name)) {result = direction;break;}}return result;}
}
Direction result1 = Direction .findByName("EAST");
Direction result2 = Direction .findByName("east");
Direction result3 = Direction .findByName("East");
System.out.println(Direction.EAST == result1); // true
System.out.println(Direction.EAST == result2); // true
System.out.println(Direction.EAST == result3); // true

Searching an Enum by Value

public enum Weekday {MONDAY("Monday"), TUESDAY("Tuesday"), SUNDAY("Sunday");private final String value;Weekday(String value) {this.value = value;}public String getValue() {return value;}public static Weekday findByValue(String value) {Weekday result = null;for (Weekday day : Weekday.values()) {if (day.getValue().equalsIgnoreCase(value)) {result = day;break;}}return result;}
}
Weekday result1 = Weekday.findByValue("Monday");
System.out.println(Weekday.MONDAY == result1); // trueWeekday result2 = Weekday.findByValue("mon");
System.out.println(result2); // null

Searching an Enum by Integer Value

public enum Month {JANUARY("January", 1), FEBRUARY("February", 2), // ...DECEMBER("December", 12);private final String value;private final int code;Month(String value, int code) {this.value = value;this.code = code;}public String getValue() {return value;}public int getCode() {return code;}public static Optional<Month> findByCode(int code) {return Arrays.stream(values()).filter(month -> month.getCode() == code).findFirst();}
}
Optional<Month> result = Month.findByCode(1);
System.out.println(Month.JANUARY == result.orElseGet(() -> null)); // trueOptional<Month> result2 = Month.findByCode(0);
System.out.println(result2.orElseGet(() -> null)); // null

Exceptions Thrown from Search Methods

public enum Month {JANUARY("January", 1),FEBRUARY("February", 2),// ...DECEMBER("December", 12);private final String value;private final int code;Month(String value, int code) {this.value = value;this.code = code;}public String getValue() {return value;}public int getCode() {return code;}public static Optional<Month> findByCode(int code) {return Arrays.stream(values()).filter(month -> month.getCode() == code).findFirst();}public static Month findByValue(String value) {return Arrays.stream(values()).filter(month -> month.getValue().equalsIgnoreCase(value)).findFirst().orElseThrow(IllegalArgumentException::new);}
}
Month.findByValue("Jan");Exception in thread "main" java.lang.IllegalArgumentExceptionat java.base/java.util.Optional.orElseThrow(Optional.java:403)at javabasic.enumprac.CheckEnumValueExist$Month.findByValue(CheckEnumValueExist.java:77)at javabasic.enumprac.CheckEnumValueExist.main(CheckEnumValueExist.java:85)

-----------------------------------------------------------------------------读书笔记摘自 文章:Check if an Enum Value Exists in Java

http://www.lryc.cn/news/106288.html

相关文章:

  • 网工内推 | 网络安全工程师,最高15K,有高温补贴
  • Android—ADB命令
  • 音视频知识:MPEG-4、H264、MP4、AAC之间的关系
  • 智能门锁的无线通讯协议有哪些?主要特点是什么?
  • 机器学习——异常检测
  • 小研究 - 一种复杂微服务系统异常行为分析与定位算法(一)
  • 代码版本管理工具 git
  • 【计算机视觉中的 GAN 】如何稳定GAN训练(3)
  • 一文讲清楚地图地理坐标系
  • 助力青少年科技创新人才培养,猿辅导投资1亿元设立新基金
  • 代码随想录算法训练营之JAVA|第十八天| 235. 二叉搜索树的最近公共祖先
  • IO进程线程第五天(8.2)进程函数+XMind(守护进程(幽灵进程),输出一个时钟,终端输入quit时退出时钟)
  • 物联网远程智能控制设备——开关量/正反转百分比控制
  • echarts图表基本使用
  • 排序进行曲-v1.0
  • 算法入门篇——用位运算解决一些问题
  • 腾讯云-宝塔添加MySQL数据库
  • 【雕爷学编程】MicroPython动手做(27)——物联网之掌控板小程序
  • Mysql删除重复数据通用SQL
  • “快速入门Spring Boot:从零开始构建Web应用程序“
  • 微信小程序tab加列表demo
  • 深入挖掘地核和地幔之间的相互作用
  • 网络:SecureCRT介绍
  • 我的512天创作纪念日
  • mysql进阶-用户密码的设置和管理
  • 2023年最新智能优化算法之——切诺贝利灾难优化器 (CDO),附MATLAB代码和文献
  • uniapp跨域解决
  • 力扣-94、144、145-前中后序遍历
  • 什么是线程?为什么需要线程?和进程的区别?
  • 【业务功能篇61】SpringBoot项目流水线 dependencyManagement 标签整改依赖包版本漏洞问题