如何创建Parse函数

时间:2011-06-23 18:05:40

标签: java enums

我有班级错误。 我有值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;
        }
    }

3 个答案:

答案 0 :(得分:6)

您必须循环枚举值,并根据给定的错误代码(num)单独检查每个的错误代码。

类似的东西:

public static Errors Parse(int num) {

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

}

答案 1 :(得分:0)

您可以在Map枚举中为Errors创建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; }

{{1}}

答案 2 :(得分:0)

添加类似的内容(特别是如果经常使用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();
}