使用反向值我有這樣的值(例如只顯示了幾個值,但你將捉對)枚舉:_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;
}
但是,必須有一個更好的辦法
枚舉應該是不變的,所以請沒有制定者 –