使用反向值我有这样的值(例如只显示了几个值,但你将捉对)枚举:_800,_830,_900,_24HOURS,封闭在枚举在Java中
这些都一个相应的值,所以我加入到我的枚举中,你可以在Java中完成,一个值域和一个getter和setter值,像这样(为了空间起见,我没有显示getter和setter,但它们是标准的):
enum Hours {
_800("08:00"),
_830("08:30"),
CLOSED("Closed"),
APPT("By Appt.")
// etc
;
Hours(String v) {
val = v;
}
String val;
}
我也希望能够去另一个方向,那就是,如果我有一个值(例如“08”),我希望它返回枚举_800。所以在枚举我添加了一个地图:
static Map<String,String> valToEnumMap = new HashMap();
然后我将此添加到我的构造函数:
Hours(String v) {
val = v;
valToEnumMap.put(v, this);
}
和新方法:
Hours valToEnum(String v) {
return valToEnumMap(v);
}
但是当我尝试运行它,我在尝试插入地图的位置出现初始化错误。我曾尝试其他东西,如
valToEnumMap.put(v, valueOf(name());
但同样的错误。我确实找到了解决方法,但速度很慢,所以我想知道我做错了什么?下面是我用它的解决方法是缓慢:
public static OfficeHoursTimes valToEnum(String val) {
for (OfficeHoursTimes o : OfficeHoursTimes.values()) {
if (o.getVal().equals(val)) {
return o;
}
}
return null;
}
但是,必须有一个更好的办法
枚举应该是不变的,所以请没有制定者 –