在业务代码中,经常需要提示码和提示信息绑定的问题,特别是在处理一些错误提示业务的时候,一般会有专门的错误类,该类中包含特定的错误码和提示信息,这种错误提示的类可以定义为枚举类,在改枚举类中定义错误码与提示信息,如下所示:
<code>
public Enum ExampleErrorCode {
//枚举实例
NAME_CONFLICT(1000, "重复命名"),
NAME_INVALID(1001,"名称无效")
//定义成员
private final Integer val;
private String message;
ExampleErrorCode(Integer val, String message) {
this.val = val;
this.message = message;
}
}
</code>
有些场景下需要动态的改变提示信息的局部内容,比如用户登录,连续输错密码,需要给出提示信息:再错n次用户将锁定用户的场景下,n每次都不一样,此时需要将需要改变的部分抽取出来,在获取输出信息的时候进行处理,代码如下:
public Enum ExampleErrorCode {
//枚举实例
NAME_CONFLICT(1000, "重复命名"),
NAME_INVALID(1001,"名称无效")
//定义成员
private final Integer val;
private String message;
private String[] param
ExampleErrorCode(Integer val, String message) {
this.val = val;
this.message = message;
}
public ExampleErrorCode withParams(String... params) {
this.param = params;
return this;
}
//省略val的get方法
public String getMessage() {
if (params != null) {
return String.format(message, params);
}
}
}
在实际使用中可以这样用:
在Example中添加错误:
LOGINERROR(1002, "还剩%s次锁定用户");
在业务逻辑中使用该错误:
String errorMessge = Example.LOGINERROR.withParams(String.valueOf(n)).getMessage();