我有多個狀態存儲在一個枚舉中。基於枚舉創建枚舉類別
public enum Status {
IS_A("isA"),
IS_B("isB"),
FP_ERR("fp_err"),
FP_BLAH("fp_blah"),
CORRECT("correct")
private final String value;
Status(String value) {
this.value = value;
}
}
我想不modifiying狀態枚舉類,以下面的方式來創建基於這些狀態類別。
public enum Category {
CategoryA("CategoryA",Status.IS_A, Status.IS_B),
CategoryB("CategoryB",Status.FP_ERR, Status.FP_BLAH).
CategoryC("CategoryC",Status.Correct);
private List<Status> status;
private String category;
private static final Map<Status, String> VALUE_MAP = Stream.of(Category.values())
Category(String category, Status ... status) {
this.status = Arrays.asList(status);
this.category = category;
}
public static String getCategory(Status status) {
//Retrun category based on Status type
String category = VALUE_MAP.get(status);
return category;
}
}
我無法弄清楚如何每個類別的值存儲與他們在地圖上VALUE_MAP
你應該使用'EnumMap'而不是'HashMap'。否則一個好建議。 –
嘗試先找到沒有'forEach'的解決方案,例如'private static final Map VALUE_MAP = Arrays.stream(values())。collect(() - > new EnumMap <>(Status.class),(m,c) - > c.status.forEach s-> m.put(s,c.category)),Map :: putAll);' –
Holger