我有多个状态存储在一个枚举中。基于枚举创建枚举类别
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