Class OpenEnum

java.lang.Object
cloud.opencode.base.core.OpenEnum

public final class OpenEnum extends Object
Enum Utility Class - Validation, retrieval, mapping, filtering and conversion for enums 枚举工具类 - 枚举的验证、获取、映射、过滤和转换

Provides comprehensive enum operations with internal caching optimization.

提供全面的枚举操作,包括验证、获取、映射、过滤和转换,支持内部缓存优化。

Features | 主要功能:

  • Get by name (getEnumByName, getEnumByNameSafely, getEnumByNameIgnoreCase) - 按名称获取
  • Get by value (getEnumByValue with custom extractor) - 按自定义值获取
  • Collection operations (getEnumList, getEnumSet, getEnumValueMap) - 集合操作
  • Validation (isValidEnum, isValidEnumIgnoreCase) - 验证
  • Utilities (ordinal, name, getByOrdinal) - 工具方法

Usage Examples | 使用示例:

// Get by name - 按名称获取
Status status = OpenEnum.getEnumByName(Status.class, "ACTIVE");
Status safe = OpenEnum.getEnumByNameSafely(Status.class, "UNKNOWN", Status.DEFAULT);

// Case-insensitive - 忽略大小写
Status s = OpenEnum.getEnumByNameIgnoreCase(Status.class, "active");

// Validation - 验证
boolean valid = OpenEnum.isValidEnum(Status.class, "ACTIVE");

// Get by custom value - 按自定义值获取
Status byCode = OpenEnum.getEnumByValue(Status.class, 1, Status::getCode);

Security | 安全性:

  • Thread-safe: Yes (ConcurrentHashMap cache) - 线程安全: 是 (并发哈希表缓存)
  • Null-safe: Yes - 空值安全: 是
Since:
JDK 25, opencode-base-core V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • getEnumByName

      public static <E extends Enum<E>> E getEnumByName(Class<E> enumClass, String name)
      Gets an enum value by name 按名称获取枚举值
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      name - the enum name | 枚举名称
      Returns:
      the enum value | 枚举值
      Throws:
      IllegalArgumentException - if the name is invalid | 如果名称无效
    • getEnumByNameSafely

      public static <E extends Enum<E>> E getEnumByNameSafely(Class<E> enumClass, String name, E defaultValue)
      Safely gets an enum value with a default 安全获取枚举值(带默认值)
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      name - the enum name | 枚举名称
      defaultValue - the default value | 默认值
      Returns:
      the enum value or default | 枚举值或默认值
    • getEnumByNameOptional

      public static <E extends Enum<E>> Optional<E> getEnumByNameOptional(Class<E> enumClass, String name)
      Gets an Optional-wrapped enum value 获取 Optional 包装的枚举值
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      name - the enum name | 枚举名称
      Returns:
      the Optional-wrapped enum value | Optional 包装的枚举值
    • getEnumByNameIgnoreCase

      public static <E extends Enum<E>> E getEnumByNameIgnoreCase(Class<E> enumClass, String name)
      Gets an enum value by name ignoring case 忽略大小写获取枚举值
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      name - the enum name | 枚举名称
      Returns:
      the enum value | 枚举值
    • getEnumByValue

      public static <E extends Enum<E>, V> E getEnumByValue(Class<E> enumClass, V value, Function<E,V> valueExtractor)
      Gets an enum by a custom value 按自定义值获取枚举
      Type Parameters:
      E - the enum type | 枚举类型
      V - the value type | 值类型
      Parameters:
      enumClass - the enum class | 枚举类
      value - the target value | 目标值
      valueExtractor - the value extractor | 值提取器
      Returns:
      the enum value | 枚举值
    • getEnumByValue

      public static <E extends Enum<E>, V> E getEnumByValue(Class<E> enumClass, V value, Function<E,V> valueExtractor, E defaultValue)
      Gets an enum by a custom value with a default 按自定义值获取枚举(带默认值)
    • getEnumList

      public static <E extends Enum<E>> List<E> getEnumList(Class<E> enumClass)
      Gets a list of all enum values 获取所有枚举值列表
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      Returns:
      the list of enum values | 枚举值列表
    • getEnumSet

      public static <E extends Enum<E>> EnumSet<E> getEnumSet(Class<E> enumClass)
      Gets an EnumSet of all enum values 获取所有枚举值集合
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      Returns:
      the EnumSet | 枚举值 EnumSet
    • getEnumValueMap

      public static <E extends Enum<E>, K> Map<K,E> getEnumValueMap(Class<E> enumClass, Function<E,K> keyExtractor)
      Creates an enum value map 创建枚举值映射
      Type Parameters:
      E - the enum type | 枚举类型
      K - the key type | 键类型
      Parameters:
      enumClass - the enum class | 枚举类
      keyExtractor - the key extractor | 键提取器
      Returns:
      the enum map | 枚举映射
    • getEnumNames

      public static <E extends Enum<E>> List<String> getEnumNames(Class<E> enumClass)
      Gets a list of enum names 获取枚举名称列表
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      Returns:
      the list of names | 名称列表
    • isValidEnum

      public static <E extends Enum<E>> boolean isValidEnum(Class<E> enumClass, String name)
      Validates whether the enum name is valid 验证枚举名称是否有效
      Type Parameters:
      E - the enum type | 枚举类型
      Parameters:
      enumClass - the enum class | 枚举类
      name - the enum name | 枚举名称
      Returns:
      true if valid | 如果有效返回 true
    • isValidEnumIgnoreCase

      public static <E extends Enum<E>> boolean isValidEnumIgnoreCase(Class<E> enumClass, String name)
      Validates whether the enum name is valid (case-insensitive) 验证枚举名称是否有效(忽略大小写)
    • ordinal

      public static int ordinal(Enum<?> enumValue)
      Gets the ordinal of the enum value 获取枚举的 ordinal
    • name

      public static String name(Enum<?> enumValue)
      Gets the name of the enum value 获取枚举的名称
    • getByOrdinal

      public static <E extends Enum<E>> E getByOrdinal(Class<E> enumClass, int ordinal)
      Gets an enum value by its ordinal 根据 ordinal 获取枚举值