Hutool EnumUtil 教程
Hutool 的EnumUtil是一个枚举工具类提供了多种便捷操作枚举的方法包括获取枚举名称列表、获取枚举值列表、根据名称获取枚举对象等。Maven 依赖dependency groupIdcn.hutool/groupId artifactIdhutool-all/artifactId version5.8.26/version /dependency示例枚举类public enum Status { SUCCESS(200, 成功), FAIL(500, 失败), PROCESSING(100, 处理中); private int code; private String msg; Status(int code, String msg) { this.code code; this.msg msg; } public int getCode() { return code; } public String getMsg() { return msg; } }常用方法1. 获取枚举名称列表// 获取所有枚举名称 ListString names EnumUtil.getNames(Status.class); // 结果: [SUCCESS, FAIL, PROCESSING]2. 获取枚举值列表// 获取所有枚举值 ListObject values EnumUtil.getFieldValues(Status.class, code); // 结果: [200, 500, 100] ListObject msgs EnumUtil.getFieldValues(Status.class, msg); // 结果: [成功, 失败, 处理中]3. 根据名称获取枚举// 不区分大小写 Status status EnumUtil.fromString(Status.class, success, true); // 结果: Status.SUCCESS // 区分大小写默认 Status status2 EnumUtil.fromString(Status.class, SUCCESS); // 结果: Status.SUCCESS4. 根据字段值获取枚举// 根据 code 字段值获取枚举 Status status EnumUtil.getBy(Status::getCode, 200, Status.class); // 结果: Status.SUCCESS5. 判断枚举是否包含某个名称boolean contains EnumUtil.contains(Status.class, SUCCESS); // 结果: true boolean containsIgnoreCase EnumUtil.containsIgnoreCase(Status.class, success); // 结果: true6. 获取枚举类信息// 判断是否为枚举类 boolean isEnum EnumUtil.isEnum(Status.class); // 结果: true // 获取枚举项数量 int size EnumUtil.size(Status.class); // 结果: 3 // 判断是否为空枚举 boolean isEmpty EnumUtil.isEmpty(Status.class); // 结果: false // 判断是否为非空枚举 boolean isNotEmpty EnumUtil.isNotEmpty(Status.class); // 结果: true7. 获取枚举映射// 枚举 - 名称映射 MapString, Status enumMap EnumUtil.getEnumMap(Status.class); // 结果: {SUCCESS: Status.SUCCESS, FAIL: Status.FAIL, PROCESSING: Status.PROCESSING} // 名称 - 枚举映射与上面相同键为名称 MapString, Status nameEnumMap EnumUtil.getNameEnumMap(Status.class);8. 获取枚举值列表泛型版本// 直接返回泛型枚举列表 ListStatus enumList EnumUtil.toList(Status.class); // 结果: [Status.SUCCESS, Status.FAIL, Status.PROCESSING]9. 根据谓词获取枚举// 获取第一个满足条件的枚举 Status status EnumUtil.getFirstBy(Status.class, e - e.getCode() 100); // 结果: Status.SUCCESS (code200)10. 枚举名称转换// 将枚举名称转换为驼峰形式 String camel EnumUtil.toCamelCase(Status.SUCCESS.name()); // 结果: success完整示例import cn.hutool.core.util.EnumUtil; import java.util.List; public class EnumUtilDemo { public static void main(String[] args) { // 1. 获取所有枚举名称 ListString names EnumUtil.getNames(Status.class); System.out.println(枚举名称: names); // 2. 获取所有 code 值 ListObject codes EnumUtil.getFieldValues(Status.class, code); System.out.println(Code值: codes); // 3. 根据名称获取枚举 Status success EnumUtil.fromString(Status.class, SUCCESS); System.out.println(获取枚举: success); // 4. 根据字段值获取枚举 Status fail EnumUtil.getBy(Status::getCode, 500, Status.class); System.out.println(根据code获取: fail); // 5. 枚举映射 var enumMap EnumUtil.getNameEnumMap(Status.class); System.out.println(枚举映射: enumMap); // 6. 判断包含 System.out.println(包含SUCCESS? EnumUtil.contains(Status.class, SUCCESS)); } }注意事项字段访问getFieldValues()方法需要字段有对应的 getter 方法或字段本身可访问性能考虑频繁调用时建议缓存结果如枚举映射命名匹配fromString()默认区分大小写可使用重载方法忽略大小写空值处理大多数方法在参数为 null 时会返回空集合或 false不会抛出 NPE总结EnumUtil简化了枚举的常见操作避免手写重复的遍历代码。对于复杂的枚举操作如根据多个条件查找可以结合 Lambda 表达式使用。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2544508.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!