【问题标题】:Lombok set default value when an attribute is explicity set to null by builder当属性被构建器显式设置为 null 时,Lombok 设置默认值
【发布时间】:2017-05-08 15:20:49
【问题描述】:

我正在使用 Lombok 1.16.16 版的新 Builder.Default 功能。 我想配置一个类,如果该属性未通过构建器显式设置,或者该属性由构建器设置为 null,则该属性采用默认值。

案例一:属性未设置

MyClass.Builder().build();

案例2:属性设置为null

MyClass.Builder().myAttribute(null).build();

在这两种情况下,我都希望设置一个默认值。背景是该类将基于数据库查询的结果构建。

下面是带注释的类

@Builder
@NonFinal
public class MyClass {

	@Builder.Default
	private String myAttribute = "-";

}

是否有任何方法可以配置类,即使明确设置为 null(案例 2),也可以将属性设置为默认值?

【问题讨论】:

    标签: lombok


    【解决方案1】:

    不,lombok 不会帮你。您将value 设置为null,那么这个attribute 将是null

    查看生成的class 是个好主意,这样您就可以了解lombok 的工作原理。

    我想到了一个解决方法。
    lombok 使用 all-args-constructorBuilderClass 创建你的类。

    所以,我认为如果您自己创建 constructor 并通过检查此值是否为空来添加您的逻辑,然后使用默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多