我有一个包含变量的类,我不希望它为 null 或空。有没有办法使用 Lombok builder 来设置属性?我可以使用 @NonNull
但我无法验证它是否为空。显然,另一种选择是编写我自己的构建器来完成所有这些检查。例如:
class Person {
@NonNull
private String firstName;
@NonNull
private String lastName;
public static class PersonBuilder() {
// .
// .
// .
public Person build() {
//do checks for empty etc and return object
}
}
}
最佳答案
Maxim Kirilov 的回答不完整。它不检查空白/空字符串。
我以前遇到过同样的问题,我意识到除了使用来自 Lombok 的 @NonNull 和 @Builder 之外,还可以使用私有(private)访问修饰符重载构造函数,您可以在其中执行验证。像这样:
private Person(final String firstName, final String lastName) {
if(StringUtils.isBlank(firstName)) {
throw new IllegalArgumentException("First name can't be blank/empty/null");
}
if(StringUtils.isBlank(lastName)) {
throw new IllegalArgumentException("Last name can't be blank/empty/null");
}
this.firstName = firstName;
this.lastName = lastName;
}
此外,当 String 具有空白、空值或 null 值时,抛出 IllegalArgumentException 更有意义(而不是 NPE)。
关于java - Lombok 构建器检查非空且不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44855981/