【问题标题】:Default value on null with Lombok or Spring Boot?Lombok 或 Spring Boot 的 null 默认值?
【发布时间】:2021-06-08 09:37:17
【问题描述】:

我有一些像这样的构造函数,我必须处理参数为null

    public Element(int value1, String value2, String value3, String value4) {
        this.value1 = value1;
        this.value2 = value2 != null ? value2 : "";
        this.value3 = value3 != null ? value3 : "";
        this.value4 = value4 != null ? value4 : "";
    }

是的,我知道,我可以编写一个实用方法或我自己的注释来减少参数 2、3、4 的样板代码

但是有没有现成的解决方案? 参数甚至类上的 @DefaultOnNull("") 之类的?

【问题讨论】:

标签: java spring-boot lombok boilerplate


【解决方案1】:

感谢所有 cmets。 我以这种方式解决了它,以至少减少一点样板代码:

    public Element(int value1, String value2, String value3, String value4) {
        this.value1 = value1;
        this.value2 = Objects.requireNonNullElse(value2, "");
        this.value3 = Objects.requireNonNullElse(value3, "");
        this.value4 = Objects.requireNonNullElse(value4, "");
    }

【讨论】:

  • 如何“减少”样板代码? :-) 这与您问题中的代码相同,但以不同的方式完成。
  • 这就是我说“一点点”的原因。我只需要写一次 value2, value3, ... ,因此这降低了复制和粘贴错误的风险。
  • 是的。也许是一个方法getDefault(value){ return Objects.requireNonNullElse(value, ""); },这样它可能看起来有点紧凑,而且你也不需要传递""(如果你想在所有情况下都默认""
【解决方案2】:

你可以使用下面的代码

this.value2 = StringUtils.defaultString(value2);

StringUtils 是一个 Apache 公用库,被广泛用于字符串相关操作的标准库。 Maven - https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.10

【讨论】:

  • 谢谢,但这 a) 需要一个额外的库 b) 仅适用于 "" 作为默认字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 2018-10-02
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多