欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > java enum code-label模式的使用方法

java enum code-label模式的使用方法

2024/10/26 2:25:00 来源:https://blog.csdn.net/AS_JOPO/article/details/142261995  浏览:    关键词:java enum code-label模式的使用方法

通常我们定义的枚举类都会有两个字段:code、label,然后我们有会需要两个方法:
1.根据code获得枚举实例对象:getByCode

2.根据code获得对应的label:getLabelByCode

当然可以在每个枚举类中实现这两个方法,但是会发现这两个方法逻辑完全一致,但是又必须每次都写,代码不够简洁,有重复造轮子的嫌疑。

下面给出一种实现方式,解决重复造轮子的问题。

1.创建公共接口

public  interface EnumInterface {String getCode();String getLabel();}

2.创建枚举类并实现接口


public enum PlanTypeEnum implements EnumInterface {WEEK_PLAN {@Overridepublic String getCode() {return "week_plan";}@Overridepublic String getLabel() {return "周计划";}},DAY_PLAN {@Overridepublic String getCode() {return "day_plan";}@Overridepublic String getLabel() {return "日计划";}},TEMP_PLAN {@Overridepublic String getCode() {return "temp_plan";}@Overridepublic String getLabel() {return "临时计划";}}
}

3.创建工具类

public class CodeEnumUtil {private CodeEnumUtil() {}/*** 根据code获取枚举* @param clazz 枚举类* @param code code* @return 枚举*/public static EnumInterface getByCode(Class<? extends Enum<?>> clazz, String code) {final Enum<?>[] enums = clazz.getEnumConstants();for (Enum<?> e : enums) {if (e instanceof EnumInterface) {EnumInterface enumInterface = (EnumInterface) e;if (enumInterface.getCode().equalsIgnoreCase(code)) {return enumInterface;}}}return null;}/*** 没有找到时,返回code** @param code code* @return label*/public static String getLabelByCode(Class<? extends Enum<?>> clazz, String code) {EnumInterface enumInterface = getByCode(clazz, code);if (enumInterface == null) {return code;}return enumInterface.getLabel();}
}

4.使用

CodeEnumUtil.getLabelByCode(PlanTypeEnum.class,"week_plan")

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com