Get Enum instance
本问题已经有最佳答案,请猛点这里访问。
我有一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public enum Type { ADMIN(1), HIRER(2), EMPLOYEE(3); private final int id; Type(int id){ this.id = id; } public int getId() { return id; } } |
Mi-24 get a
您可以构建一个映射来执行此查找。
1 2 3 4 5 6 7 8 | 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 3 4 5 6 7 8 9 10 11 12 13 | Type get(int n) { switch (n) { case 1: return Type.ADMIN; case 2: return Type.EMPLOYEE; case 3: return Type.HIRER; default: return null; } } |
提示:您需要在
更新(感谢@andyturner):
It would be better to loop and refer to the id field, so you're not duplicating the IDs.
1 2 3 4 5 6 7 8 | Type fromId(int id) { for (Type t : values()) { if (id == t.id) { return t; } } return null; } |
试试这个。我创建了一个使用ID搜索类型的方法:
1 2 3 4 5 6 7 8 9 | public static Type getType(int id) { for (Type type : Type.values()) { if (id == type.getId()) { return type; } } return null; } |