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

时间:2014-06-08 18:03:44

标签: java netbeans lombok

我有一个包含数十个setter和getter的项目(ID3标记)。我正在调查龙目岛计划,看看它对我有什么帮助。

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

2 个答案:

答案 0 :(得分:1)

简短的回答是,你不能。

现在支持的唯一一致性检查是@Nonnull。如果你还需要其他东西,你必须手动编写你的setter。显然,没有任何工具可以完成您列出的所有检查,并通过注释对其进行描述最多也会很麻烦。

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

答案 1 :(得分:0)

尽管目前无法对 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);
        }
    }
}

source and credit