Interface ICodeBook


public interface ICodeBook
代码本接口

用于定义枚举类的标准接口,提供代码、名称和描述的获取方法

主要功能: 1. 定义枚举的标准接口(getCode、getName、getDescription) 2. 提供通过名称查找枚举的工具方法 3. 提供通过代码值查找枚举的工具方法

使用场景: - 字典类型枚举(如:状态码、类型码等) - 需要代码和描述分离的业务枚举 - 需要动态查找枚举值的场景

使用示例:

public enum OrderStatus implements ICodeBook {
    PENDING("0", "待处理", "订单已创建,等待处理"),
    PROCESSING("1", "处理中", "订单正在处理"),
    COMPLETED("2", "已完成", "订单已完成");

    private String code;
    private String name;
    private String description;

    // 构造函数和getter...

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public String getDescription() {
        return description;
    }
}

// 使用示例
OrderStatus status = ICodeBook.valueOfCode("0", OrderStatus.class);
Author:
Kerbores(kerbores@riemann.tech)
  • Method Details

    • getDescription

      String getDescription()
      获取描述信息

      返回枚举项的详细描述信息

      Returns:
      返回描述信息字符串
    • getCode

      String getCode()
      获取代码值

      返回枚举项的代码值,通常用于存储或传输

      Returns:
      返回代码字符串
    • name

      String name()
      获取名称

      返回枚举项的名称,通常用于显示

      Returns:
      返回名称字符串
    • getName

      default String getName()
      获取名称(默认实现)

      调用name()方法,提供统一的名称获取接口

      Returns:
      返回名称字符串
    • valueOf

      static <E extends Enum<E>> E valueOf(String name, Class<E> clazz)
      根据枚举名称获取枚举对象

      通过枚举常量的名称查找对应的枚举对象

      该方法是对Enum.valueOf()方法的一次封装,提供了一种更方便的通过字符串名称获取枚举对象的方式

      Type Parameters:
      E - 枚举类型标记,表示任何继承自Enum的子类
      Parameters:
      name - 枚举名称,对应枚举常量的名称
      clazz - 枚举类的类型
      Returns:
      返回对应的枚举对象
    • valueOfCode

      static <E extends Enum<E> & ICodeBook> E valueOfCode(String code, Class<E> clazz)
      根据代码值获取枚举对象

      通过遍历枚举类的所有常量,比较每个常量的代码值与提供的代码值是否匹配

      如果找到匹配的常量,则返回该常量;如果没有找到匹配的常量,则抛出IllegalArgumentException异常

      这在实际开发中非常有用,尤其是在需要根据配置或动态获取的枚举代码来操作枚举对象时

      Type Parameters:
      E - 枚举类型标记,表示任何继承自Enum并实现ICodeBook接口的子类
      Parameters:
      code - 枚举代码,对应枚举常量的代码值
      clazz - 枚举类的类型
      Returns:
      返回对应的枚举对象
    • build

      default Codebook build()
      构建Codebook对象

      将当前枚举项转换为Codebook对象,包含名称、描述和代码信息

      使用场景: - 将枚举转换为统一的数据字典格式 - 用于前端下拉选项、单选框、复选框等

      Returns:
      Codebook新构建的Codebook对象,包含名称、描述和代码信息
    • values

      static <E extends Enum<E> & ICodeBook> E[] values(Class<E> clazz)
      获取枚举类的所有常量数组

      该方法是对Class.getEnumConstants()方法的封装,提供了一种更便捷的方式获取枚举常量

      通过泛型约束确保传入的类既是枚举类型又实现了ICodeBook接口

      Type Parameters:
      E - 枚举类型标记,表示任何继承自Enum并实现ICodeBook接口的子类
      Parameters:
      clazz - 枚举类的类型
      Returns:
      返回该枚举类的所有常量数组
    • toCodebooks

      static <E extends Enum<E> & ICodeBook> List<Codebook> toCodebooks(Class<E> clazz)
      将枚举类的所有常量转换为Codebook列表

      通过获取枚举类的所有常量,并调用每个常量的build()方法将其转换为Codebook对象

      最终返回一个包含所有Codebook对象的列表,常用于下拉选项、数据字典等场景

      使用示例:

      List<Codebook> codebooks = ICodeBook.toCodebooks(OrderStatus.class);
      // 返回:[
      // {name: "待处理", code: "0", description: "订单已创建,等待处理"},
      // {name: "处理中", code: "1", description: "订单正在处理"},
      // {name: "已完成", code: "2", description: "订单已完成"}
      // ]
      
      Type Parameters:
      E - 枚举类型标记,表示任何继承自Enum并实现ICodeBook接口的子类
      Parameters:
      clazz - 枚举类的类型
      Returns:
      返回包含所有枚举常量转换后的Codebook列表