我想简化给定的代码(实际上是状态的映射):
private static final Map<SomeStatusEnum, OtherStatusEnum> STATUS_ENUM_MAP = Map.of(
SomeStatusEnum.A, OtherStatusEnum.OK,
SomeStatusEnum.B, OtherStatusEnum.NOK,
SomeStatusEnum.C, OtherStatusEnum.NOK,
SomeStatusEnum.D, OtherStatusEnum.NOK,
SomeStatusEnum.E, OtherStatusEnum.NOK,
SomeStatusEnum.F, OtherStatusEnum.NOK
);
像这样的结构:
private static final Map<SomeStatusEnum, OtherStatusEnum> STATUS_ENUM_MAP = Map.of(
SomeStatusEnum.A, OtherStatusEnum.OK,
*ALL OTHER SomeStatusEnums*, OtherStatusEnum.NOK
);
因此,只有
SomeStatusEnum.A
指向OtherStatusEnum.OK
,而其他所有指向OtherStatusEnum.NOK
,而无需在映射中明确地写入所有内容。有人知道吗?
最佳答案
不确定这是您要寻找的-但是可以将地图与getOrDefault函数一起使用,如下所示:
private static final Map<SomeStatusEnum, OtherStatusEnum> STATUS_ENUM_MAP =
Map.of(SomeStatusEnum.A, OtherStatusEnum.OK);
然后将地图用作:
STATUS_ENUM_MAP.getOrDefault(value, OtherStatusEnum.NOK)