我有一个枚举方法@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来避免将来出现任何空指针异常。
我搜索过Stackoverflow和Jackson文档,但找不到任何解决方案。
Jackson有没有办法注释一个返回带有@JsonCreator
注释的可选方法?
答案 0 :(得分:0)
我认为你可能会从错误的角度看待它。
@JsonCreator
用于构造函数或工厂方法 - 你不会指望构造函数可选地为你返回对象 - 你会吗?
另一方面,如果你将enum对象包装在某个DTO类中,它可能会开箱即用。
public class Response {
private Optional<Gender> gender;
...
}