获取Enum实例

这个问题在这里已经有了答案:

  • 通过字符串值查找Java枚举23个答案

  • 尝试一下。 我创建了一个使用id搜索类型的方法:

    public static Type getType(int id) {
    
        for (Type type : Type.values()) {
            if (id == type.getId()) {
                return type;
            }
        }
        return null;
    }
    

    您可以构建一个映射来执行此查找。

    static final Map<Integer, Type> id2type = new HashMap<>();
    static {
        for (Type t : values())
            id2type.put(t.id, t);
    }
    public static Type forId(int id) {
        return id2type.get(id);
    }
    

    Type类中创建一个返回Enum实例的方法:

    Type get(int n) {
        switch (n) {
        case 1:
            return Type.ADMIN;
        case 2:
            return Type.EMPLOYEE;
        case 3:
            return Type.HIRER;
        default:
            return null;
        }
    
    }
    

    提示:您需要在switch-case添加default ,或者在方法末尾添加return null以避免编译器错误。


    更新 (感谢@AndyTurner):

    循环并引用id字段会更好,因此您不会重复这些ID。

    Type fromId(int id) {
        for (Type t : values()) {
            if (id == t.id) {
                return t;
            }
        }
        return null;
    }
    
    链接地址: http://www.djcxy.com/p/38091.html

    上一篇: Get Enum instance

    下一篇: How to match and switch Strings against enums?