java – 用于检查非null而非空的Lombok构建器

我有一个变量类,我不希望它为null或空.有没有办法使用Lombok构建器来设置属性?我可以使用@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 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具有空值,空值或空值时,抛出IllegalArgumentException会更有意义(而不是NPE).

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...