如何使用JAVA 8检查对象的所有字段是否为NULL?

use*_*475 2 java java-8

我想检查对象的所有字段为空或不使用Java 8.尝试了不同的方法,因为在提到这里,但我想它使用Java 8的功能来完成.

例如:

class person{
   String name;
   Long id;
   //getter & setter
}
Person person = new Person();
List<Person> personList = new ArrayList<>();
personList.add(person);
Run Code Online (Sandbox Code Playgroud)

我想只在id和name不为NULL时才添加person to list.因为,Person有超过10个字段,我不想空检查每个字段并添加到列表中.在这里,我从DB操作中设置ResultSet中的那些字段.

Woo*_*low 7

假设您在编译时知道所有字段,最好的解决方案是明确检查每个字段.对此任务使用反射会增加不必要的运行时开销.但是,为了节省一些精力,您可以在类本身上编写一个函数来处理此检查.

class Person {
    String name;
    Long id;

    // constructor, getters, and setters

    public boolean isEmpty() {
        return (this.name == NULL && this.id == NULL);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你的身体代码可能如下所示:

Person person = new Person();
if (!person.isEmpty()) {
    personList.add(person);
}
Run Code Online (Sandbox Code Playgroud)

如果在运行时之前不知道所有字段,则需要使用此stackoverflow应答所描述的反射.