更好的方法来测试非空字段

Vic*_*tor 1 java spring java-8 spring-boot

我有一个包含一些字段的对象,我想检查一些字段是否为空且不为空.有没有一种很好的方法在java 8或apache实用程序中这样做...

我不想做类似的事情

if(myObj.getMyField1 != null || myObj.getMyField1 != "" || myObj.getMyField2 != null || myObj.getMyField2 != "" || myObj.getMyField3 != null || myObj.getMyField3 != "") {} 
Run Code Online (Sandbox Code Playgroud)

这是myObj

@Data // lombok for generating getters and setters
public class Myobj {
   private String myField1;
   private String myField2;
   private String myField3;
   private String myField4;
   private String myField5;

   private AnotherObj myField6;

}
Run Code Online (Sandbox Code Playgroud)

你有什么建议吗?

hol*_*ava 5

您可以使用java-8 Stream#anyMatch来检查字符串是否为null空.例如:

boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
                                     .anyMatch(it-> it==null || it.isEmpty());
Run Code Online (Sandbox Code Playgroud)

或者你可以用方法引用表达式替换lambda表达式,该方法可以在以后重用:

boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
                                     .anyMatch(this::isNullOrEmptyString);

boolean isNullOrEmptyString(String it){
  return it==null || it.isEmpty();
}
Run Code Online (Sandbox Code Playgroud)

或者当我看到你标记为spring的问题时,spring已经有一个实用程序方法StringUtils#isEmpty来检查String是否为null空:

boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
                                     .anyMatch(StringUtils::isEmpty);
Run Code Online (Sandbox Code Playgroud)