@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.空值防御:如果輸入值為空或空字符串,直接返回nullif (ObjectUtil.isEmpty(value)) return null;// 2.遍歷枚舉:遍歷該枚舉類型的所有實例for (FileFilterRangeEnum anEnum : FileFilterRangeEnum.values()) {// 3.值匹配:檢查當前枚舉實例的值是否與輸入值匹配if (anEnum.getValue().equals(value)) return anEnum;}// 4.未找到匹配項:遍歷完所有枚舉常量仍未找到時返回nullreturn null;}
1.?枚舉項定義
枚舉類包含兩個常量,分別表示兩種文件過濾范圍:
-
FILE_NAME("文件名稱", "fileName")
表示按文件名稱進行過濾。 -
FILE_CONTENT("文件內容", "fileContent")
表示按文件內容進行過濾。
每個枚舉常量關聯兩個屬性:
-
text
: 可讀性強的中文描述(如“文件名稱”)。 -
value
: 實際用于程序邏輯的標識符(如"fileName"
)。
2.?Lombok 注解
-
@AllArgsConstructor
自動生成全參構造函數,用于初始化?text
?和?value
?屬性。 -
@Getter
自動生成?getText()
?和?getValue()
?方法,提供對私有屬性的訪問。
3.?getEnumByValue
?方法
這是一個工具方法,根據傳入的?value
?查找對應的枚舉常量,邏輯如下:
-
空值防御
使用?ObjectUtil.isEmpty(value)
?檢查輸入,避免空指針異常。 -
遍歷枚舉項
通過?FileFilterRangeEnum.values()
?遍歷所有枚舉實例。 -
值匹配
比較枚舉項的?value
?與輸入值,找到匹配項則返回對應的枚舉常量。 -
未找到返回?
null
遍歷完成后仍未匹配時返回?null
。
4.?應用場景
此枚舉類可用于需要區分文件過濾范圍的場景,例如:
-
用戶在前端選擇按“文件名稱”或“文件內容”過濾文件時,后端接收對應的?
value
(如?"fileName"
),通過?getEnumByValue
?方法轉換為枚舉,再根據枚舉類型執行不同的過濾邏輯。 -
提供類型安全的文件過濾范圍表示,避免硬編碼字符串帶來的維護問題。