JAVA中常量使用常量类或者常量接口还是使用枚举,错误代码和中文可变信息的枚举实现

文章目录

关于“JAVA中常量使用常量类或者常量接口还是使用枚举”,已有定论-使用枚举,原因就不再展开了。

借助java枚举,可以在定义错误名称和代码的同时,定义中文描述信息,但是实际应用中,往往需要在标准错误信息中增加一些可变信息。代码实现如下。
调用实例

  @Test
    void contextLoads() {
        String desc = MsgErr.DB_WRITE.getDesc("是否不唯一?");
        System.out.println("desc = " + desc);
        desc=MsgErr.INPUT_INVALID.getDesc();
        System.out.println("desc = " + desc);
        desc=MsgErr.INPUT_INVALID.getDesc("字典类型");
        System.out.println("desc = " + desc);

    }
desc = 保存数据失败!(注:是否不唯一?)
desc = 输入参数无效,无法处理!
desc = 输入参数[字典类型]无效,无法处理!

代码

package com.muyi.common.enums;

import io.swagger.annotations.ApiModel;

/**
 * 枚举:错误信息
 * 
 *     中文信息中可定义字符串格式化转换符,获取中文信息时可以添加自定义信息
 * 
* @author MuYi * @version 1.0 * @date 2022/4/7 17:33 **/
@ApiModel(value = "接口MsgErr", description = "枚举:错误信息") public enum MsgErr { /** * 输入参数[%s]为空,无法处理! */ INPUT_NULL(0, "输入参数[%s]为空,无法处理!"), /** * 输入参数[%s]无效,无法处理! */ INPUT_INVALID(1, "输入参数[%s]无效,无法处理!"), /** * 读取数据时发生错误 */ DB_READ(2, "读取数据时发生错误!"), /** * 保存数据失败(数据是否不唯一?、校验是否有误?) */ DB_WRITE(3, "保存数据失败!"); private final String desc; private final Integer value; /** * 获得中文信息。如果包含字符串格式化转换法,自动移除 * * @return 中文信息 */ public String getDesc() { return desc.contains("[%s]") ? desc.replace("[%s]", "") : desc; } /** * 获得中文信息。 *
     *     如果包含字符串格式化转换法,自动替换为输入参数
     *     不含字符串格式化转换法,在中文信息尾部添加输入参数
     * 
* * @param params 中文信息附加信息 * @return 中文信息 */
public String getDesc(Object params) { return desc.contains("[%s]") ? String.format(desc, params) : String.format("%s(注:%s)", desc, params); } public Integer getValue() { return value; } private MsgErr(Integer value, String desc) { this.desc = desc; this.value = value; } }

你可能感兴趣的:(SpringMVC,java)