枚举的适用场景:表示错误码,业务状态(用户状态、订单状态),业务种类(权限、分类)。
在一些REST风格的API中,需要返回错误码与对应的错误信息:
Error code
HTTP status code
User message
ServerBusy
Service Unavailable (503)
The server is currently unable to receive requests. Please retry your request.
使用带构造参数的枚举可以解决这个问题,并带来良好的可维护性。
/**
* Created by huangyp on 2014/11/11.
*/
public enum ErrorCodeEnum {
ServerBusy(503, "The server is currently unable to receive requests. Please retry your request.");
private Integer statusCode;
private String userMessage;
ErrorCodeEnum(Integer _code, String _message) {
userMessage = _message;
statusCode = _code;
}
/** accessor method **/
}
在Web页面中用标签展示、编辑。
selected>${tag.text}
/**
* Returns the {@link EcProductTag} enum for the given {@link String} value.
* @param str
* @return
*/
public static EcProductTag fromString(String str) {
try {
return EcProductTag.valueOf(StringUtils.upperCase(str));
} catch (Exception e) {
return GENERAL;
}
}