Java枚举:返回String以外的值

ggr*_*ery 0 java enums

我无法在任何地方找到这个问题的答案,所以我希望有人可以帮助我.我期待我所要求的是不可能的,但我想确认一下.首先,一个枚举例子......

public enum StatusCode {

    SUCCESS(0), GENERAL_ERROR(999), CONNECTION_TIMEOUT_ERROR(1337);

    private int statusCode;

    private StatusCode(int statusCode) {
        this.statusCode = statusCode;
    }

    public int getStatusCode() {
        return statusCode;
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在使用此枚举来强制使用特定的状态代码.我的问题是:有没有办法可以引用StatusCode.SUCCESS并让它返回与之关联的int值?不要过多关于我想做什么的细节,而是采用这个例子:

public String getStatusMessage(int statusCode) {
    // Map<Integer, String> that contains status messages
    // return String for key statusCode
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,调用此方法的语法是getStatusMessage(StatusCode.SUCCESS.getStatusCode()).

有没有办法缩短这个getStatusMessage(StatusCode.SUCCESS)

我认为第二种方式看起来更清晰,并且会使我的代码更具可读性.有任何想法吗?任何帮助深表感谢.提前致谢!

vil*_*iam 8

你的意思是这样的?

public String getStatusMessage(StatusCode code) {
    int status = code.getStatusCode();
    String message = ...do stuff to get message :)
    return message;
}
Run Code Online (Sandbox Code Playgroud)