複数のステータスが列挙型に格納されています。列挙型に基づいて列挙型カテゴリを作成します。
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;
}
}
次のように、ステータスenumクラスを変更せずに、これらのステータスに基づいてカテゴリを作成したいと考えています。
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
を必要としないマップVALUE_MAP
'HashMap'ではなく' EnumMap'を使うべきです。そうでなければ、素晴らしい提案です。 –
まず 'forEach'を使わないで解決策を見つけようとします。新しいEnumMap <>(Status.class)、(m、c) - > c.status.forEach()このクラスは、 s-> m.put(s、c.category))、Map :: putAll); ' – Holger