我有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
枚举?
答案 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;
}