我正在使用一个看起来像这样的(旧版,不可更改)枚举:
enum MsgEnum {
private int number;
private int msg;
MSG_OK("OK", 0);
MSG_NOK("NOK, 1);
//lots of other messages
private MsgEnum(String msg, int number) {
this.msg = msg;
this.number = number;
}
}
如果我有
number
,如何最好地找出哪个MsgEnum
与数字匹配(假设它们是唯一的)?除了以下以外,还有什么更好的方法吗?
class MyEnumHelper() {
public static MsgEnum MsgEnumfromNumber(int number) {
for (MsgEnum m : MsgEnum.values()) {
if (m.getNumber() == number) {
return m;
}
}
return null;
}
}
最佳答案
您可以在助手中声明一个静态Map,然后使用静态方法getMsgEnumFromInteger(int)对其进行访问。就像是 :
private static final Map<Integer, MsgEnum> INT_TO_ENUM = new HashMap<Integer, MsgEnum>();
static {
for (MsgEnum msgE : MsgEnum.values) {
INT_TO_ENUM.put(msgE.getNumber(), msgE);
}
}
public static MsgEnum getByInt(int number) {
return INT_TO_ENUM.get(number);
}
(对不起,如果有错误,目前没有Java env ^^)
关于java - 如何根据一个值找到一个枚举?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19677046/