2011-06-23 34 views
0

我有類錯誤。 我有值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; 
     } 
    } 

回答

6

你必須要循環枚舉的值,並檢查每個單獨的針對給定的錯誤代碼的錯誤代碼(NUM) 。

類似:

public static Errors Parse(int num) { 

    for(Errors error: Errors.values()) { 
    if (error.getErrorCode() == num) { 
     return error; 
    } 
    } 
    return null; 

} 
+0

@simply丹尼斯,把這個方法裏面'錯誤'。 – mre

+0

@simple denis,@mre是正確的。 – gouki

0

您可以創建一個MapErrors枚舉內。使用錯誤代碼查找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; 
} 
0

添加這樣的事情(尤其是如果分析方法是經常使用):

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(); 
}