简化值的静态映射

Simplify static mapping of values

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

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)