我有一个包含一些字段的对象,我想检查某些字段是否为空且不为空。在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;
}
你有什么建议吗?
答案 0 :(得分:5)
您可以使用java-8 Stream#anyMatch检查字符串是null
还是空。例如:
boolean hasNullOrEmptyString = Stream.of(myField1,myField2,...,myFieldN)
.anyMatch(it-> it==null || it.isEmpty());
OR 你可以用方法引用表达式替换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);
答案 1 :(得分:2)
我建议使用Apache StringUtils类: https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isAnyEmpty-java.lang.CharSequence...-
答案 2 :(得分:2)
您已将此标记为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) {
//
}
然后您的对象将在实例化时验证。