优化这段代码优化@AllArgsConstructor @Getter @NoArgsConstructor public enum FormSourceTypeEnum { BLANK(1, "空白创建"), TEMPLATE(2, "模板"); @EnumValue @JsonValue private int value; private String desc; /** * 枚举入参注解 * * @param value * @return */ @JsonCreator public stati
时间: 2023-08-07 09:02:29 浏览: 104
springboot使用@data注解减少不必要代码
c FormSourceTypeEnum valueOf(int value) {
for (FormSourceTypeEnum type : FormSourceTypeEnum.values()) {
if (type.getValue() == value) {
return type;
}
}
return null;
}
/**
* 根据枚举名称获取枚举对象
*
* @param name 枚举名称
* @return 枚举对象
*/
public static FormSourceTypeEnum fromName(String name) {
for (FormSourceTypeEnum type : FormSourceTypeEnum.values()) {
if (type.name().equalsIgnoreCase(name)) {
return type;
}
}
return null;
}
// 重写toString方法,方便日志输出等场景的使用
@Override
public String toString() {
return String.valueOf(this.value);
}
```
优化建议:
1. 建议将`valueOf`和`fromName`方法合并成一个方法,使用一个参数既可以根据枚举的名称或者值获取到枚举对象,可以避免代码重复。
2. 可以使用`@AllArgsConstructor`注解来自动生成带参构造方法,避免手动编写构造方法的重复劳动。
3. 可以将`@Getter`和`@Setter`注解同时使用,避免手动编写getter和setter方法的重复劳动。
4. 可以使用`@ToString`注解来自动生成`toString`方法,避免手动编写`toString`方法的重复劳动。
综上所述,优化后的代码如下:
```
@AllArgsConstructor
@Getter
public enum FormSourceTypeEnum {
BLANK(1, "空白创建"),
TEMPLATE(2, "模板");
@EnumValue
@JsonValue
private int value;
private String desc;
/**
* 根据枚举名称或值获取枚举对象
*
* @param nameOrValue 枚举名称或值
* @return 枚举对象
*/
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
public static FormSourceTypeEnum fromNameOrValue(String nameOrValue) {
for (FormSourceTypeEnum type : FormSourceTypeEnum.values()) {
if (type.name().equalsIgnoreCase(nameOrValue) || String.valueOf(type.getValue()).equals(nameOrValue)) {
return type;
}
}
return null;
}
// 重写toString方法,方便日志输出等场景的使用
@Override
public String toString() {
return String.valueOf(this.value);
}
}
```
优化后的代码结构更加简洁清晰,并且使用了注解自动生成代码,避免了手动编写重复代码的工作。
阅读全文