Как создать функцию разбора - PullRequest
0 голосов
/ 23 июня 2011

У меня есть ошибки класса. У меня есть значение 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 ]

6 голосов
/ 23 июня 2011

Вам нужно будет зациклить значения вашего перечисления и отдельно проверить код ошибки каждого по отношению к заданному коду ошибки (номер).

что-то вроде:

public static Errors Parse(int num) {

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

}
0 голосов
/ 23 июня 2011

Добавьте что-то вроде этого (особенно если метод разбора используется часто):

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();
}
0 голосов
/ 23 июня 2011

Вы можете создать 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...