Java 8:如何检查对象的所有字段是否为 NULL,除了一个

Δήμ*_*ίου 0 java java-8

我想检查一个实例化类的所有字段是否都是 NULL EXCEPT FROM id。

例如:

class Doggy {
   String id;
   String name;
   String breed;
   String eyeColour;
   String hairColour;
   Integer age;
   Long height;
   Long weight;
   //getters & setters
}
Run Code Online (Sandbox Code Playgroud)

我想知道它是否可以使用 java 8 发生。在此先感谢您。

我有一个这样的实例化对象:

Doggy doggy = new Doggy;
doggy.setId("123");
Run Code Online (Sandbox Code Playgroud)

我想要一种更优雅的方式来执行以下操作:

if (doggy.getId()!=null && doggy.getName()==null && doggy.getBreed()==null && 
        doggy.getEyeColour()==null && doggy.getHairColour()==null && 
        doggy.getAge()==null && doggy.getHeight()==null && doggy.getWeight()==null) {
   doSomething();
}
Run Code Online (Sandbox Code Playgroud)

ton*_*ank 5

如果这里的 java 8 我们的意思是使用流,你可以做

Doggy doggy = new Doggy();
doggy.id = "1";
boolean allIsNullButId = Arrays.stream(Doggy.class.getDeclaredFields()).allMatch(f -> {
    try {
        return (f.getName().equals("id") && f.get(doggy) != null) || f.get(doggy) == null;
    } catch (IllegalAccessException e) {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)