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

java枚举类型的查找

@AllArgsConstructor
@Getter
public enum FileFilterRangeEnum {

    FILE_NAME("文件名称","fileName"),
    FILE_CONTENT("文件内容","fileContent");

    private final String text;
    private final String value;


    // 根据传入的字符串值查找对应的枚举常量
    public static FileFilterRangeEnum getEnumByValue(String value) {

        // 1.空值防御:如果输入值为空或空字符串,直接返回null
        if (ObjectUtil.isEmpty(value))  return null;

        // 2.遍历枚举:遍历该枚举类型的所有实例
        for (FileFilterRangeEnum anEnum : FileFilterRangeEnum.values()) {
            // 3.值匹配:检查当前枚举实例的值是否与输入值匹配
            if (anEnum.getValue().equals(value))  return anEnum;
        }
        // 4.未找到匹配项:遍历完所有枚举常量仍未找到时返回null
        return null;
    }

1. 枚举项定义

枚举类包含两个常量,分别表示两种文件过滤范围:

  • FILE_NAME("文件名称", "fileName")
    表示按文件名称进行过滤。

  • FILE_CONTENT("文件内容", "fileContent")
    表示按文件内容进行过滤。

每个枚举常量关联两个属性:

  • text: 可读性强的中文描述(如“文件名称”)。

  • value: 实际用于程序逻辑的标识符(如"fileName")。


2. Lombok 注解

  • @AllArgsConstructor
    自动生成全参构造函数,用于初始化 text 和 value 属性。

  • @Getter
    自动生成 getText() 和 getValue() 方法,提供对私有属性的访问。


3. getEnumByValue 方法

这是一个工具方法,根据传入的 value 查找对应的枚举常量,逻辑如下:

  1. 空值防御
    使用 ObjectUtil.isEmpty(value) 检查输入,避免空指针异常。

  2. 遍历枚举项
    通过 FileFilterRangeEnum.values() 遍历所有枚举实例。

  3. 值匹配
    比较枚举项的 value 与输入值,找到匹配项则返回对应的枚举常量。

  4. 未找到返回 null
    遍历完成后仍未匹配时返回 null


4. 应用场景

此枚举类可用于需要区分文件过滤范围的场景,例如:

  • 用户在前端选择按“文件名称”或“文件内容”过滤文件时,后端接收对应的 value(如 "fileName"),通过 getEnumByValue 方法转换为枚举,再根据枚举类型执行不同的过滤逻辑。

  • 提供类型安全的文件过滤范围表示,避免硬编码字符串带来的维护问题。


http://www.kler.cn/a/547520.html

相关文章:

  • 沃德校园助手系统php+uniapp
  • 【16届蓝桥杯寒假刷题营】第1期DAY4
  • HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
  • 【Linux】:网络通信
  • SpringBoot3使用Swagger3
  • C++效率掌握之STL库:string底层剖析
  • Java-数据结构-(TreeMap TreeSet)
  • vue 文件下载(导出)excel的方法
  • 服务器虚拟化(详解)
  • zookeeper的zkCli.sh登录server报错【无法正常使用】
  • 《千多桃花一世开》:南胥月为何爱暮悬铃
  • 笔试第四十二行
  • Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)
  • 从零到一:开发并上线一款极简记账本小程序的完整流程
  • 数据科学之数据管理|python for Excel
  • 机器学习算法 - 随机森林之决策树初探(1)
  • java原子操作类实现原理
  • Ubuntu中离线安装Docker
  • 小米平板怎么和电脑共享屏幕
  • JavaScript设计模式 -- 外观模式