简化值的静态映射
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)
我想简化给定的代码(实际上是状态的映射):
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)