【问题标题】:Lombok generating constructor without @Nonnull annotationLombok 生成没有 @Nonnull 注释的构造函数
【发布时间】:2019-10-16 05:14:42
【问题描述】:

我正在使用 Lombok 来生成我的 POJO。我有一堆用javax.annotation.Nonnull 注释的字段,我希望这个注释能够自动传输到构造函数。
但是,这并没有发生,Lombok 似乎根本忽略了这个注释,并且在使用 @Nullable 值时不会生成任何警告。

当 IDE 生成构造函数时 - 一切都按预期工作。这也适用于 getter/setter。
我尝试将javax.annotation.Nonnull添加到lombok.copyableAnnotations并添加javax.annotation.ParametersAreNonnullByDefault注释,均无济于事。

@Data
class TestObject {
  @Nonnull private String nonnull;
}

TestObject testObject = new TestObject(null); <-- no warning
testObject.setNonnull(null); <-- warning generated

我希望在构造函数上收到与在 setter 上相同的警告。这是 Lombok 中的一个错误,是无法实现的,还是我只是错过了什么?

【问题讨论】:

    标签: java constructor lombok non-nullable


    【解决方案1】:

    这是因为 Lombok 仅“扫描”@lombok.NonNull。见下例:

    @lombok.RequiredArgsConstructor
    public class LombokNoNull {
        @lombok.NonNull
        private String lombokRequires;
        @javax.validation.constraints.NotNull
        private String lombokDoesNotRequire;
        @javax.annotation.Nonnull
        private String lombokDoesNotRequireEither;
    
        public static LombokNoNull newInstance() {
            // for this class the required args constructor contains only field
            // "lombokRequires"
            return new LombokNoNull("stringRequiredByLombok");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多