Class EnumKit

java.lang.Object
org.miaixz.bus.core.xyz.EnumKit

public class EnumKit extends Object
枚举工具类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • EnumKit

      public EnumKit()
  • Method Details

    • isEnum

      public static boolean isEnum(Class<?> clazz)
      指定类是否为Enum类
      Parameters:
      clazz - 类
      Returns:
      是否为Enum类
    • isEnum

      public static boolean isEnum(Object obj)
      指定类是否为Enum类
      Parameters:
      obj - 类
      Returns:
      是否为Enum类
    • toString

      public static String toString(Enum<?> e)
      Enum对象转String,调用Enum.name() 方法
      Parameters:
      e - Enum
      Returns:
      name值
    • getEnumAt

      public static <E extends Enum<E>> E getEnumAt(Class<E> enumClass, int index)
      获取给定位置的枚举值
      Type Parameters:
      E - 枚举类型泛型
      Parameters:
      enumClass - 枚举类
      index - 枚举索引
      Returns:
      枚举值,null表示无此对应枚举
    • fromString

      public static <E extends Enum<E>> E fromString(Class<E> enumClass, String value)
      字符串转枚举,调用Enum.valueOf(Class, String)
      Type Parameters:
      E - 枚举类型泛型
      Parameters:
      enumClass - 枚举类
      value - 值
      Returns:
      枚举值
    • fromString

      public static <E extends Enum<E>> E fromString(Class<E> enumClass, String value, E defaultValue)
      字符串转枚举,调用Enum.valueOf(Class, String) 如果无枚举值,返回默认值
      Type Parameters:
      E - 枚举类型泛型
      Parameters:
      enumClass - 枚举类
      value - 值
      defaultValue - 无对应枚举值返回的默认值
      Returns:
      枚举值
    • fromStringQuietly

      public static <E extends Enum<E>> E fromStringQuietly(Class<E> enumClass, String value)
      字符串转枚举,调用Enum.valueOf(Class, String),转换失败返回null 而非报错
      Type Parameters:
      E - 枚举类型泛型
      Parameters:
      enumClass - 枚举类
      value - 值
      Returns:
      枚举值
    • likeValueOf

      public static <E extends Enum<E>> E likeValueOf(Class<E> enumClass, Object value)
      模糊匹配转换为枚举,给定一个值,匹配枚举中定义的所有字段名(包括name属性),一旦匹配到返回这个枚举对象,否则返回null
      Type Parameters:
      E - 枚举类型
      Parameters:
      enumClass - 枚举类
      value - 值
      Returns:
      匹配到的枚举对象,未匹配到返回null
    • getNames

      public static List<String> getNames(Class<? extends Enum<?>> clazz)
      枚举类中所有枚举对象的name列表
      Parameters:
      clazz - 枚举类
      Returns:
      name列表
    • getFieldValues

      public static List<Object> getFieldValues(Class<? extends Enum<?>> clazz, String fieldName)
      获得枚举类中各枚举对象下指定字段的值
      Parameters:
      clazz - 枚举类
      fieldName - 字段名,最终调用getXXX方法
      Returns:
      字段值列表
    • getFieldNames

      public static List<String> getFieldNames(Class<? extends Enum<?>> clazz)
      获得枚举类中所有的字段名 除用户自定义的字段名,也包括“name”字段,例如:
         EnumKit.getFieldNames(Ansi4BitColor.class) == ["name", "index"]
       
      Parameters:
      clazz - 枚举类
      Returns:
      字段名列表
    • getBy

      public static <E extends Enum<E>> E getBy(Class<E> enumClass, Predicate<? super E> predicate)
      通过 某字段对应值 获取 枚举,获取不到时为 null
      Type Parameters:
      E - 枚举类型
      Parameters:
      enumClass - 枚举类
      predicate - 条件
      Returns:
      对应枚举 ,获取不到时为 null
    • getBy

      public static <E extends Enum<E>, C> E getBy(FunctionX<E,C> condition, C value)
      通过 某字段对应值 获取 枚举,获取不到时为 null
      Type Parameters:
      E - 枚举类型
      C - 字段类型
      Parameters:
      condition - 条件字段
      value - 条件字段值
      Returns:
      对应枚举 ,获取不到时为 null
    • getBy

      public static <E extends Enum<E>, C> E getBy(FunctionX<E,C> condition, C value, E defaultEnum)
      通过 某字段对应值 获取 枚举,获取不到时为 defaultEnum
      Type Parameters:
      E - 枚举类型
      C - 值类型
      Parameters:
      condition - 条件字段
      value - 条件字段值
      defaultEnum - 条件找不到则返回结果使用这个
      Returns:
      对应枚举 ,获取不到时为 null
    • getFieldBy

      public static <E extends Enum<E>, F, C> F getFieldBy(FunctionX<E,F> field, Function<E,C> condition, C value)
      通过 某字段对应值 获取 枚举中另一字段值,获取不到时为 null
      Type Parameters:
      E - 枚举类型
      F - 想要获取的字段类型
      C - 条件字段类型
      Parameters:
      field - 你想要获取的字段
      condition - 条件字段
      value - 条件字段值
      Returns:
      对应枚举中另一字段值 ,获取不到时为 null
    • getEnumMap

      public static <E extends Enum<E>> LinkedHashMap<String,E> getEnumMap(Class<E> enumClass)
      获取枚举字符串值和枚举对象的Map对应,使用LinkedHashMap保证有序 结果中键为枚举名,值为枚举对象
      Type Parameters:
      E - 枚举类型
      Parameters:
      enumClass - 枚举类
      Returns:
      枚举字符串值和枚举对象的Map对应,使用LinkedHashMap保证有序
    • getNameFieldMap

      public static Map<String,Object> getNameFieldMap(Class<? extends Enum<?>> clazz, String fieldName)
      获得枚举名对应指定字段值的Map 键为枚举名,值为字段值
      Parameters:
      clazz - 枚举类
      fieldName - 字段名,最终调用getXXX方法
      Returns:
      枚举名对应指定字段值的Map
    • contains

      public static <E extends Enum<E>> boolean contains(Class<E> enumClass, String name)
      判断指定名称的枚举是否存在
      Type Parameters:
      E - 枚举类型
      Parameters:
      enumClass - 枚举类
      name - 需要查找的枚举名
      Returns:
      是否存在
    • notContains

      public static <E extends Enum<E>> boolean notContains(Class<E> enumClass, String val)
      判断某个值是不存在枚举中
      Type Parameters:
      E - 枚举类型
      Parameters:
      enumClass - 枚举类
      val - 需要查找的值
      Returns:
      是否不存在
    • equalsIgnoreCase

      public static boolean equalsIgnoreCase(Enum<?> e, String val)
      忽略大小检查某个枚举值是否匹配指定值
      Parameters:
      e - 枚举值
      val - 需要判断的值
      Returns:
      是非匹配
    • equals

      public static boolean equals(Enum<?> e, String val)
      检查某个枚举值是否匹配指定值
      Parameters:
      e - 枚举值
      val - 需要判断的值
      Returns:
      是非匹配