相关疑难解决方法(0)

Java枚举反向查找最佳实践

在博客上看到它建议以下是使用getCode(int)Java枚举进行"反向查找"的合理方法:

public enum Status {
    WAITING(0),
    READY(1),
    SKIPPED(-1),
    COMPLETED(5);

    private static final Map<Integer,Status> lookup 
            = new HashMap<Integer,Status>();

    static {
        for(Status s : EnumSet.allOf(Status.class))
            lookup.put(s.getCode(), s);
    }

    private int code;

    private Status(int code) {
        this.code = code;
    }

    public int getCode() { return code; }

    public static Status get(int code) { 
        return lookup.get(code); 
    }
}
Run Code Online (Sandbox Code Playgroud)

对我来说,静态地图和静态初始化程序看起来都是个坏主意,我的第一个想法就是将查询编码为:

public enum Status {
    WAITING(0),
    READY(1),
    SKIPPED(-1),
    COMPLETED(5);

    private int code;

    private Status(int code) {
        this.code = code;
    } …
Run Code Online (Sandbox Code Playgroud)

java enums static-initializer

72
推荐指数
4
解决办法
4万
查看次数

我可以在Java中为枚举指定序数吗?

ordinal()方法返回枚举实例的序数.
如何设置枚举的序数?

java enums

66
推荐指数
4
解决办法
9万
查看次数

标签 统计

enums ×2

java ×2

static-initializer ×1