java - 测试非空字段的更好方法

标签 java spring spring-boot java-8

我有一个包含一些字段的对象,我想检查一些字段是否不为空且不为空。在 Java 8 或 Apache 实用程序中是否有一种好的方法...

我不想做类似的事情

if(myObj.getMyField1 != null || myObj.getMyField1 != "" || myObj.getMyField2 != null || myObj.getMyField2 != "" || myObj.getMyField3 != null || myObj.getMyField3 != "") {} 

这是我的对象

@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;

}

你有什么建议吗?

最佳答案

您可以使用 java-8 Stream#anyMatch检查字符串是 null 还是空的。例如:

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

或者您可以将 lambda 表达式替换为方法引用表达式,该方法以后可以重用:

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

boolean isNullOrEmptyString(String it){
  return it==null || it.isEmpty();
}

OR 因为我看到你的问题标记为 spring,而 spring 已经有一个实用方法 StringUtils#isEmpty 用于检查 String 是否是 null 或空的:

boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
                                     .anyMatch(StringUtils::isEmpty);

关于java - 测试非空字段的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44137924/

相关文章:

java - 如何解决spring boot框架的Endless Building process?

docker - Springboot 客户端无法使用 Docker 容器 id 向 Eureka 注册

java - 如何获取 JList 中的选定项并使用转换

java - Spring preAuthorize SpEL 查询的日志结果?

java - Spring security saml 中的代理设置

spring-boot - 使用 Flyway 和 Spring Boot 迁移具有不同生命周期的多个模式

java - 在 ConstraintValidator 中注入(inject) EntityManager

java - 如何在 java 接口(interface)中使用泛型?

java - 确保实现静态方法

spring - Tomcat JDBC 数据源查找在 Spring 应用程序中失败