java返回在用@JsonCreator注释的方法中是可选的
我有一个带有方法@JsonCreator
注释的枚举,该方法基于字符串代码返回枚举类,如下所示:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum Gender {
MALE("M", "Male"), FEMALE("F", "Female");
private final String code;
private final String text;
@JsonCreator
public static Gender fromValue(String code) {
for (Gender classType : Gender.values()) {
if (classType.getCode().equals(code))
return classType;
}
return null;
}
}
这很好,但我想返回一个可选的而不是null,以避免将来出现任何null指针异常
我已经搜索了Stackoverflow和Jackson文档,但找不到任何解决方案
在Jackson中有没有一种方法可以用@JsonCreator
注释来注释返回可选值的方法
# 1 楼答案
我想你可能是从错误的角度看问题
@JsonCreator
在构造函数或工厂方法上使用-您不会期望构造函数选择性地为您返回对象-是吗另一方面,如果将枚举对象包装在某个DTO类中,它可能会立即生效