繁体   English   中英

如何在 Project Lombok setter 中进行自定义验证

[英]How to make custom validations in Project Lombok setters

我有一个包含数十个 setter 和 getter 的项目(ID3 标记)。 我正在调查 Project Lombok 以了解它如何帮助我。

一些可以设置的字段有非常严格的要求,可能包括字符编码、位设置、长度检查、字符范围等。 我可以使用构建器模式,但在某些情况下可能不需要该模式。 如果我想使用验证方法和/或类而不是注释怎么办? 如何在 Netbeans 项目中访问 Lombok 的 setter 以添加这些验证?

简短的回答是你不能。

现在唯一支持的一致性检查是@Nonnull 如果你想要别的东西,你必须手动编写你的 setter。 显然,没有任何工具可以完成您列出的所有检查,并且通过注释来描述它们充其量是很麻烦的。

有时,此功能请求可能会有所帮助。 对于您的需要,它可能过于粗糙。 通常,您只需要手动编写一些 setter。 此功能对于不可变对象更有用,因为它将提供向生成的构造函数添加验证的唯一方法。

尽管目前无法对 setter 进行验证,但您可以在 lombok Builder 上进行自定义验证。

为此,您应该覆盖 Builder.build 方法并将您的验证放在那里。 示例代码片段如下所示

@Getter
@EqualsAndHashCode
@ToString
@Builder(builderClassName = "Builder",buildMethodName = "build")
public class Customer {
    private long id;
    private String name;

    static class Builder {
        Customer build() {
            if (id < 0) {
                throw new RuntimeException("Invaid id");
            }
            if (Objects.isNull(name)) {
                throw new RuntimeException("name is null");
            }
            return new Customer(id, name);
        }
    }
}

来源和信用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM