获取Enum实例

时间:2016-05-03 15:26:56

标签: java enums

我有Enum

public enum Type {

    ADMIN(1), 
    HIRER(2), 
    EMPLOYEE(3);

    private final int id;

    Type(int id){
        this.id = id;       
    }

    public int getId() {
        return id;
    }
}

如何通过 Type 属性获取 id 枚举?

3 个答案:

答案 0 :(得分:6)

您可以构建一个地图来执行此查找。

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

答案 1 :(得分:2)

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

}

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

更新(感谢@AndyTurner):

  

最好循环并引用id字段,这样你就不会重复ID了。

Type fromId(int id) {
    for (Type t : values()) {
        if (id == t.id) {
            return t;
        }
    }
    return null;
}

答案 2 :(得分:0)

试一试。我创建了一个使用id:

搜索类型的方法
public static Type getType(int id) {

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