优化@Getter @AllArgsConstructor public enum FormLogicExpressionEnum { ALL(1, "全部"), ANY(2, "任意"); @EnumValue @JsonValue private Integer value; private String desc; /** * 枚举入参注解 * * @param value * @return */ @JsonCreator public static FormLogicExpressionEnum getByValue(Integer value) { for (FormLogicExpressionEnum typeEnum : values()) { if (typeEnum.getValue().equals(value)) { return typeEnum; } } return null; } }
时间: 2024-02-18 14:59:51 浏览: 58
在这段代码中,可以使用枚举的静态代码块来替代 getByValue 方法,以提高代码的可读性和性能。修改后的代码如下:
```
@Getter
@AllArgsConstructor
public enum FormLogicExpressionEnum {
ALL(1, "全部"),
ANY(2, "任意");
@EnumValue
@JsonValue
private Integer value;
private String desc;
static {
for (FormLogicExpressionEnum typeEnum : values()) {
map.put(typeEnum.getValue(), typeEnum);
}
}
private static final Map<Integer, FormLogicExpressionEnum> map = new HashMap<>();
public static FormLogicExpressionEnum getByValue(Integer value) {
return map.get(value);
}
}
```
这里使用了一个静态代码块来初始化一个 Map,将枚举值的 value 作为 key,枚举对象本身作为 value,这样在 getByValue 方法中就可以直接通过 key 获取对应的枚举对象。这样修改后的代码不仅更加简洁,而且在获取枚举对象时也更加高效。
阅读全文