问题描述
|
我有课程错误。
我有值errorCode。
我需要通过errorCode获取字符串。
例如,
int number = -2;
Errors.Parse(number).toString();
返回值#-2#The username is already in use.
public enum Errors {
UNKNOWN_ERROR(-1,\"Unknown error\"),LOGIN_ALREADY_EXISTS(-2,\"The username is already in use.\"),LOGIN_OR_PASSWORD_NOT_CORRECT (-3,\"LOGIN_OR_PASSWORD_NOT_CORRECT\"),NULL_POINTER (-4,\"Null pointer exception\"),NOT_CORRECT_DATA (-5,\"NOT_CORRECT_DATA\");
private final int errorCode;
private final String message;
private Errors(int errorCode,String message) {
this.errorCode = errorCode;
this.message = message;
}
public int getErrorCode() {
return errorCode;
}
public String getMessage() {
return message;
}
@Override
public String toString() {
return \"#\" + errorCode + \"#\" + message;
}
}
解决方法
您将必须循环枚举的值,并对照给定的错误代码(num)分别检查每个错误代码的错误代码。
就像是:
public static Errors Parse(int num) {
for(Errors error: Errors.values() ) {
if (error.getErrorCode() == num ) {
return error;
}
}
return null;
}
, 您可以在Errors
枚举中为它创建一个Map
。使用错误代码查找Errors
枚举。通过拨打以下电话来查找值:Errors.getErrorForCode(1);
private static final Map<Integer,String> allErrors;
static
{
allErrors = new HashMap<Integer,String>();
for(Errors error : values())
{
allErrors.put(error.getErrorCode(),error);
}
}
public static Errors getErrorForCode(int errorCode)
{
Errors error = allErrors.get(errorCode);
if(error == null)
{
throw new IllegalArgumentException(\"Unknown error code\");
}
return error;
}
, 添加以下内容(尤其是如果经常使用parse方法):
private static Map<Integer,Errors> errorMap = new HashMap<Integer,Errors>();
static {
for(Errors error : Errors.values()) {
errorMap.put(error.getErrorCode,error);
}
}
public static String parse (int number) {
return errorMap.get(number).toString();
}