如何创建解析函数

发布于 2024-11-17 09:29:52 字数 1011 浏览 1 评论 0原文

我有类错误。 我有值错误代码。 我需要通过错误代码获取字符串。

例如,int number = -2;

Errors.Parse(number).toString();

返回值#-2#用户名已被使用。

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

I have class Errors.
I have value errorCode.
I need get string by errorCode.

example, int number = -2;

Errors.Parse(number).toString();

return value #-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;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

聆听风音 2024-11-24 09:29:52

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

像这样的东西:

public static Errors Parse(int num) {

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

}

You will have to loop the values of your enum and check individually the error code of each against the given error code (num).

something like:

public static Errors Parse(int num) {

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

}
向地狱狂奔 2024-11-24 09:29:52

您可以在 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;
}

You can create a Map for that inside your Errors enum. Use the error code to look up the Errors enum. Look up the value by making a call like this: 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;
}
葬心 2024-11-24 09:29:52

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

Add something like this (especially if the parse method is used frequently):

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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文