郴州网站建设公司哪里有,北京市中关村有哪家可以做网站维护,网站建设设计摘要,临沂做网站的在哪里文章目录 一、枚举类型概述二、valueOf() 方法详解1. 什么是 valueOf() 方法#xff1f;2. 使用示例 三、使用 Stream API 查找枚举对象1. 使用 Stream 查找枚举对象2. 使用 Stream 统计枚举对象 四、总结推荐阅读文章 在 Java 中#xff0c;枚举#xff08;enum#xff09… 文章目录 一、枚举类型概述二、valueOf() 方法详解1. 什么是 valueOf() 方法2. 使用示例 三、使用 Stream API 查找枚举对象1. 使用 Stream 查找枚举对象2. 使用 Stream 统计枚举对象 四、总结推荐阅读文章 在 Java 中枚举enum是一种特殊的类用于表示一组常量。它不仅使代码更具可读性还提供了类型安全性。Java 枚举还带有一些有用的方法其中最常用的之一是 valueOf() 方法。此外结合 Java 8 引入的 Stream API我们可以轻松地处理枚举。本文将深入探讨 valueOf() 方法的使用以及如何通过 Stream API 查找枚举对象。 一、枚举类型概述
枚举类型是用 enum 关键字定义的表示一组固定的常量。例如表示一个星期的枚举类型
public enum Day {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}二、valueOf() 方法详解
1. 什么是 valueOf() 方法
valueOf() 是枚举类的一个静态方法允许我们根据指定的字符串返回对应的枚举常量。这个方法的签名如下
public static T valueOf(String name)其中T 是枚举类型的名称name 是枚举常量的名称必须完全匹配区分大小写。
2. 使用示例
让我们看看如何使用 valueOf() 方法
public class EnumExample {public static void main(String[] args) {// 获取枚举常量Day day Day.valueOf(MONDAY);System.out.println(Selected day: day); // 输出: Selected day: MONDAY// 处理无效的输入try {Day invalidDay Day.valueOf(FUNDAY); // 这将抛出 IllegalArgumentException} catch (IllegalArgumentException e) {System.out.println(Error: e.getMessage()); // 输出: Error: No enum constant Day.FUNDAY}}
}在上述代码中我们成功获取了 MONDAY 枚举常量。如果尝试使用无效的常量名如 FUNDAY将会抛出 IllegalArgumentException。
三、使用 Stream API 查找枚举对象
Java 8 引入的 Stream API 使得操作集合更加简单高效。对于枚举类型我们可以使用 Stream API 来查找、过滤和处理枚举常量。
1. 使用 Stream 查找枚举对象
假设我们想要查找所有工作日MONDAY 到 FRIDAY的枚举常量可以使用 Stream 来实现
import java.util.Arrays;public class EnumStreamExample {public static void main(String[] args) {// 查找工作日Day[] workdays Arrays.stream(Day.values()).filter(day - day ! Day.SATURDAY day ! Day.SUNDAY).toArray(Day[]::new);System.out.println(Workdays: Arrays.toString(workdays)); // 输出: Workdays: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]}
}在这个例子中我们使用 Day.values() 方法获取所有的枚举常量然后通过 Stream 进行过滤只保留工作日。
2. 使用 Stream 统计枚举对象
除了查找我们还可以使用 Stream 来统计枚举对象的数量例如计算一周中的天数
public class EnumCountExample {public static void main(String[] args) {long totalDays Arrays.stream(Day.values()).count();System.out.println(Total days in a week: totalDays); // 输出: Total days in a week: 7}
}但是如果是枚举值的话推荐还是使用 valueOf() 进行枚举查询(通常用)。
实际中的一个案例演示 Overridepublic WeaResultMapString, Object customAction(MapString, Object params) {EsbActionFlag esbActionFlag Arrays.stream(EsbActionFlag.values()).filter(e - e.name().equals(Optional.ofNullable(params.get(esbActionFlag)).map(Object::toString).orElse(null))).findFirst().orElse(null);Assert.notNull(esbActionFlag, SystemEnv.getHtmlLabelName(272064,请确认动作流必传参数(esbActionFlag)是否传递正确));return WeaResult.success(esbActionHandleBeanFactory.getEsbActionHandleBean(esbActionFlag).doAction(params));}通过 valueOf() 方法直接简化成一行代码如下 Overridepublic WeaResultMapString, Object customAction(MapString, Object params) {EsbActionFlag esbActionFlag EsbActionFlag.valueOf(String.valueOf(params.get(esbActionFlag)));Assert.notNull(esbActionFlag, SystemEnv.getHtmlLabelName(272064,请确认动作流必传参数(esbActionFlag)是否传递正确));return WeaResult.success(esbActionHandleBeanFactory.getEsbActionHandleBean(esbActionFlag).doAction(params));}四、总结
在 Java 中valueOf() 方法是用于从字符串获取对应枚举常量的便利工具但在使用时需要确保输入字符串的正确性以避免异常的发生。与此同时借助 Java 8 的 Stream API我们可以轻松地对枚举常量进行查询和处理使得代码更加简洁与高效。
通过这些工具和方法我们可以更好地利用枚举类型的优势提升代码的可读性和可维护性。在实际开发中理解和灵活运用这些特性将大大提高我们的工作效率。
推荐阅读文章
1、使用 Spring 框架构建 MVC 应用程序初学者教程 2、有缺陷的 Java 代码Java 开发人员最常犯的 10 大错误 3、如何理解应用 Java 多线程与并发编程 4、Java Spring 中常用的 PostConstruct 注解使用总结 5、线程 vs 虚拟线程深入理解及区别 6、深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别 7、10大程序员提升代码优雅度的必杀技瞬间让你成为团队宠儿 8、“打破重复代码的魔咒使用 Function 接口在 Java 8 中实现优雅重构” 9、Java 中消除 If-else 技巧总结 10、线程池的核心参数配置(仅供参考) 11、【人工智能】聊聊Transformer深度学习的一股清流(13)
12、Java 枚举的几个常用技巧你可以试着用用