有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我想你可能是从错误的角度看问题

    @JsonCreator在构造函数或工厂方法上使用-您不会期望构造函数选择性地为您返回对象-是吗

    另一方面,如果将枚举对象包装在某个DTO类中,它可能会立即生效

    public class Response {
    
       private Optional<Gender> gender;
    
       ...
    
    }