package com.yunhai.userbase.enums; import com.yunhai.userbase.utils.EnumUtils; import java.util.List; import java.util.Map; /** * 统一枚举规范接口,仅定义契约getKey/getValue * 内置静态工具方法,业务直接 IEnum.xxx(枚举类) 调用 * @param key类型 */ public interface IEnum { /** 获取编码key */ T getKey(); /** 获取中文展示value */ String getValue(); // ====================== 静态工具入口(统一对外调用) ====================== /** 获取枚举全部实例列表 */ static & IEnum> List toList(Class clazz) { return EnumUtils.toList(clazz); } /** 根据key获取枚举,无匹配返回null */ static & IEnum> E getByKey(Class clazz, Object key) { return EnumUtils.getEnumByKey(clazz, key); } /** 根据key严格获取,不存在抛异常(对应fromKey) */ static & IEnum> E fromKey(Class clazz, Object key) { return EnumUtils.fromKey(clazz, key); } /** 根据key获取中文value,无匹配返回空串 */ static & IEnum> String getValueByKey(Class clazz, Object key) { return EnumUtils.getValue(clazz, key); } /** 根据中文value获取key字符串,无匹配返回空串 */ static & IEnum> String getKeyByValue(Class clazz, String value) { return EnumUtils.getKey(clazz, value); } /** 判断key是否存在 */ static & IEnum> boolean existsKey(Class clazz, Object key) { return EnumUtils.isExistKey(clazz, key); } /** 判断value是否存在 */ static & IEnum> boolean existsValue(Class clazz, String value) { return EnumUtils.isExistValue(clazz, value); } /** 转完整Map列表(包含enum实例、name、key、value) */ static & IEnum> List> toFullMapList(Class clazz) { return EnumUtils.toMapList(clazz); } /** 转下拉简易Map列表,自定义key/value字段名 */ static & IEnum> List> toSimpleMapList(Class clazz, String keyMapName, String valueMapName) { return EnumUtils.toMapList(clazz, keyMapName, valueMapName); } }