本文介绍了将整数值转换为匹配的Java Enum的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的枚举:
public enum PcapLinkType {
DLT_NULL(0)
DLT_EN10MB(1)
DLT_EN3MB(2),
DLT_AX25(3),
/*snip, 200 more enums, not always consecutive.*/
DLT_UNKNOWN(-1);
private final int value;
PcapLinkType(int value) {
this.value= value;
}
}
现在我从外部输入获得一个int并希望匹配输入 - 如果值不存在则抛出异常是可以的,但在这种情况下我最好是 DLT_UNKNOWN
。
Now I get an int from external input and want the matching input - throwing an exception if a value does not exist is ok, but preferably I'd have it be DLT_UNKNOWN
in that case.
int val = in.readInt();
PcapLinkType type = ???; /*convert val to a PcapLinkType */
推荐答案
你会需要手动执行此操作,方法是在将整数映射到枚举的类中添加静态映射,例如
You would need to do this manually, by adding a a static map in the class that maps Integers to enums, such as
private static final Map<Integer, PcapLinkType> intToTypeMap = new HashMap<Integer, PcapLinkType>();
static {
for (PcapLinkType type : PcapLinkType.values()) {
intToTypeMap.put(type.value, type);
}
}
public static PcapLinkType fromInt(int i) {
PcapLinkType type = intToTypeMap.get(Integer.valueOf(i));
if (type == null)
return PcapLinkType.DLT_UNKNOWN;
return type;
}
这篇关于将整数值转换为匹配的Java Enum的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!