当前位置: 首页 > 知识库问答 >
问题:

Lombok中带有@Builder或@Getter注释的默认字段值

慕冠宇
2023-03-14

我正在使用Lombok@Builder注释,但我希望一些字符串字段是可选的,并默认为,以避免NPE。有没有一个简单的方法可以做到这一点?我什么也找不到。

或者,一种自定义@Getter的方法,用于在变量为null时返回默认值。

共有3个答案

呼延烈
2023-03-14

另一种方法是使用@Builder(toBuilder=true)

@Builder(toBuilder = true)
public class XYZ {
    private String x = "X";
    private String y = "Y";
    private String z = "Z";
}

然后按如下方式使用它:

new XYZ().toBuilder().build();

对于公认的答案,这种方法对类重命名不太明智。如果重命名XYZ,但忘记重命名内部静态类XYZBuilder,那么魔法就消失了!

使用你更喜欢的方法完全取决于你。

岑明辉
2023-03-14

您必须提供如下所示的生成器类:

@Builder
public class XYZ {
    private String x;
    private String y;
    private String z;

    private static class XYZBuilder {
        private String x = "X";
        private String y = "Y";
        private String z = "Z";
    }
}

然后,xyz的默认值将是“x”“y”“z”

申屠晟
2023-03-14

从版本v1.16.16开始,他们添加了@Builder。默认

@Builder.Default允许您在使用@Builder时为字段配置默认值。

例如:

@Setter
@Getter
@Builder
public class MyData {
  private Long id;
  private String name;

  @Builder.Default
  private Status status = Status.NEW;
}

PS:幸好他们还添加了警告,以防你没有使用@Builder。默认值

警告:(35,22)java:@Builder将完全忽略初始化表达式。如果希望初始化表达式用作默认值,请添加@Builder。违约如果在构建过程中不应设置该字段,则将该字段设置为最终字段。

 类似资料:
  • 我可以在lombok中使用@JsonIgnore和@getter注释,而不显式定义getter,因为我必须在序列化对象时使用这个JsonIgnore,但是在反序列化时,JsonIgnore注释必须是ignore,所以对象中的字段不能为空。 我知道,只要在password的getter上定义JsonIgnore就可以防止我的密码被序列化,但为此我必须显式定义我不想要的getter。任何建议,任何帮助

  • 我正在使用龙目岛的建设者。将默认值分配给我试图使用的一些变量 @建筑商。违约 但问题是,在使用上述注释时,我不再能够通过生成器初始化该值,因为编译器在尝试通过生成器初始化变量时说无法解析方法。 所以,本质上我要寻找的是一种设置默认值的方法,并且在通过构建器启动时仍然能够覆盖。

  • 我正在开发一个基于spring boot的rest web服务,我使用lombok来生成getter和setter,但是当我调用我的web服务时,我得到了一个带有默认值null的对象,这是我的代码: 我的实体 : 这是我的Rest服务: 在我的配置文件中,我添加了以下行: 当我呼叫我的服务时,我得到以下响应: 如果我在我的类中添加了getters和setters,它就能正常工作,我会得到json的

  • 问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我

  • 问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我

  • 问题内容: 我正在将Lombok项目与Spring Data JPA一起使用。有什么方法可以将Lombok 与JPA默认构造函数连接? 码: 据我所知,JPA需要默认的构造函数,该构造函数被注解覆盖。有什么解决方法吗? 这段代码给我错误: 问题答案: 更新 根据反馈和John的回答,我已更新了不再使用or的答案,而是通过和创建访问器和变量,通过创建默认构造函数via,最后我们创建了构建器通过via