我想简化给定的代码(实际上是状态的映射):

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)

10-02 16:27