Java 测试非空字段的更好方法
我有一个包含一些字段的对象,我想检查一些字段是否为空。在Java8或apache实用程序中有没有一种好的方法可以做到这一点 我不想做这样的事Java 测试非空字段的更好方法,java,spring,spring-boot,java-8,Java,Spring,Spring Boot,Java 8,我有一个包含一些字段的对象,我想检查一些字段是否为空。在Java8或apache实用程序中有没有一种好的方法可以做到这一点 我不想做这样的事 if(myObj.getMyField1 != null || myObj.getMyField1 != "" || myObj.getMyField2 != null || myObj.getMyField2 != "" || myObj.getMyField3 != null || myObj.getMyField3 != "") {} 我是myO
if(myObj.getMyField1 != null || myObj.getMyField1 != "" || myObj.getMyField2 != null || myObj.getMyField2 != "" || myObj.getMyField3 != null || myObj.getMyField3 != "") {}
我是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;
}
您有什么建议吗?我建议使用Apache StringUtils类:
我建议使用Apache StringUtils类:
您已将其标记为spring boot,因此我假设您可能正在使用控制器并验证其参数。如果是这样的话,就这么做吧
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Data
public class Myobj {
@NotNull
@Size(min = 1)
private String myField1;
@NotNull
@Size(min = 1)
private String myField2;
/* etc */
}
及
然后您的对象将在实例化时进行验证。您已将其标记为spring boot,因此我假设您可能正在使用控制器并验证其参数。如果是这样的话,就这么做吧
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Data
public class Myobj {
@NotNull
@Size(min = 1)
private String myField1;
@NotNull
@Size(min = 1)
private String myField2;
/* etc */
}
及
然后在实例化时验证对象。您可以使用java-8检查字符串是否为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();
}
或者我看到您的问题标记为spring,spring已经有了一个实用方法StringUtilSempty来检查字符串是否为null或空:
boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
.anyMatch(StringUtils::isEmpty);
可以使用java-8检查字符串是否为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();
}
或者我看到您的问题标记为spring,spring已经有了一个实用方法StringUtilSempty来检查字符串是否为null或空:
boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
.anyMatch(StringUtils::isEmpty);
谢谢@milcaepsilon,您的链接仅用于字符串。@Victor我假设您想测试字符串,因为您使用了!=我想要一种不需要大量编码的测试方法,例如,在ArrayList中生成字段的名称,并生成一个循环来检查列表中存在的每个字段是否只测试字符串字段或任何类型的属性?Cf your AnotherObj thanking@milcaepsilon,您的链接仅用于字符串。@Victor我假设您想测试字符串,因为您使用了!=我想要一种不需要大量编码的测试方法,例如,在ArrayList中生成字段的名称,并生成一个循环来检查列表中存在的每个字段是否只测试字符串字段或任何类型的属性?Cf your AnotherObj thanking@eis如果我的数据库中存在notNullException,我如何捕获@NotNullcode@Victor通过a.Thank@eis,如果我的系统中存在notNullException,那么我可以捕获@NotNullcode@Victor通过一个。getMyField1应该是一个getter实际是getMyField1还是一个field access实际是myField1?@Holger通过查看myObj的代码,它需要是getterIs getMyField1应该是getter实际上是getMyField1还是字段访问实际上是myField1?@Holger通过查看myObj的代码,它需要是getterhanks@holi java,但是当字段为null时,应用程序抛出java.lang。NullPointerException@Victor你好你可以看到更多细节。谢谢@holi java。关于NullpointerException,我检查对象是否为null,然后应用Stream.of。。。在该领域的各个领域object@Victor一点也不。我只能给您一些建议,因为您没有对示例代码提出疑问。这是第一次验证:boolean addressValidation=cInfo.getAddress!=无效的Stream.ofcInfo.getAddress.getZip,cInfo.getAddress.getCity.anyMatchStringUtils::isEmpty:false;谢谢@holi java,但是当字段为空时,应用程序抛出java.lang。NullPointerException@Victor您好,您可以查看更多详细信息。谢谢@holi java。关于NullpointerException,我检查对象是否为null,然后应用Stream.of。。。在该领域的各个领域object@Victor一点也不。我只能给您一些建议,因为您没有对示例代码提出疑问。这是第一次验证:boolean addressValidation=cInfo.getAddress!=无效的Stream.ofcInfo.getAddress.getZip,cInfo.getAddress.getCity.anyMatchStringUtils::isEmpty:false;