【发布时间】:2020-04-10 23:59:14
【问题描述】:
我想简化给定的代码(实际上是状态的映射):
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 而不将所有这些都明确写在地图中。
谁有想法?
【问题讨论】:
-
您需要使用地图吗?为什么不使用
OtherStatusEnum statusMapping(SomeStatusEnum en){ switch (en){ case A: return OtherStatusEnum.OK; default: return OtherStatusEnum.NOK; } }这样的方法呢?这里*ALL OTHER SomeStatusEnums*由default:处理。如果您有很多应该映射为 OK 的情况,您可以使用case A: case B: return OtherStatusEnum.OK;(请参阅 Using two values for one switch case statement) -
完美解决了,会用这个方法:-)