[英]Better way to test non null fields
我有一个包含一些字段的对象,我想检查某些字段是否不为null和不为空。 在Java 8或apache实用程序中是否有一个很好的方法...
我不想做类似的事情
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;
}
您有什么建议吗?
您可以使用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();
}
或者,正如我看到的标记为spring的问题一样,spring已经具有实用程序方法StringUtils#isEmpty
用于检查String
是否为null
或为空:
boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
.anyMatch(StringUtils::isEmpty);
您已将其标记为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 */
}
和
@RequestMapping(value = "/some/url", method = POST)
public void yourMethod(@RequestBody @Valid YourObject yourObject) {
//
}
然后,将在实例化时验证您的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.