在業(yè)務(wù)代碼中鱼填,經(jīng)常需要提示碼和提示信息綁定的問題擒贸,特別是在處理一些錯(cuò)誤提示業(yè)務(wù)的時(shí)候,一般會(huì)有專門的錯(cuò)誤類窗轩,該類中包含特定的錯(cuò)誤碼和提示信息夯秃,這種錯(cuò)誤提示的類可以定義為枚舉類,在改枚舉類中定義錯(cuò)誤碼與提示信息痢艺,如下所示:
<code>
public Enum ExampleErrorCode {
//枚舉實(shí)例
NAME_CONFLICT(1000, "重復(fù)命名"),
NAME_INVALID(1001,"名稱無效")
//定義成員
private final Integer val;
private String message;
ExampleErrorCode(Integer val, String message) {
this.val = val;
this.message = message;
}
}
</code>
有些場(chǎng)景下需要?jiǎng)討B(tài)的改變提示信息的局部?jī)?nèi)容仓洼,比如用戶登錄,連續(xù)輸錯(cuò)密碼堤舒,需要給出提示信息:再錯(cuò)n次用戶將鎖定用戶的場(chǎng)景下色建,n每次都不一樣,此時(shí)需要將需要改變的部分抽取出來舌缤,在獲取輸出信息的時(shí)候進(jìn)行處理箕戳,代碼如下:
public Enum ExampleErrorCode {
//枚舉實(shí)例
NAME_CONFLICT(1000, "重復(fù)命名"),
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);
}
}
}
在實(shí)際使用中可以這樣用:
在Example中添加錯(cuò)誤:
LOGINERROR(1002, "還剩%s次鎖定用戶");
在業(yè)務(wù)邏輯中使用該錯(cuò)誤:
String errorMessge = Example.LOGINERROR.withParams(String.valueOf(n)).getMessage();