stream流校验一个对象多个属性是否为空,为空返回所有为空提示信息,拼接所有为空提示信息
时间: 2023-11-08 21:24:06 浏览: 92
可以使用Java 8的Stream流来校验一个对象的多个属性是否为空,并返回所有为空的属性的提示信息。具体实现可以参考以下代码:
假设有一个Person类,包含name、age和address属性:
```java
public class Person {
private String name;
private Integer age;
private String address;
// 省略getter和setter方法
}
```
现在需要对一个Person对象的多个属性进行校验,判断哪些属性为空,并返回所有为空的属性的提示信息。可以使用Stream流来实现:
```java
Person person = new Person();
person.setName("张三");
person.setAge(null);
person.setAddress("");
List<String> errorList = Stream.of(
person.getName() == null ? "姓名不能为空" : "",
person.getAge() == null ? "年龄不能为空" : "",
person.getAddress() == null || person.getAddress().isEmpty() ? "地址不能为空" : ""
).filter(StringUtils::isNotBlank).collect(Collectors.toList());
if (!errorList.isEmpty()) {
String errorMessage = String.join(",", errorList);
System.out.println(errorMessage);
}
```
以上代码中,首先创建一个Person对象,并设置name、age和address属性的值。然后使用Stream.of方法创建一个包含所有需要校验的属性的Stream流,并使用三元运算符判断每个属性是否为空,如果为空则返回对应的提示信息,否则返回空字符串。接着使用filter方法过滤掉所有空字符串,最后使用collect方法将所有非空字符串收集到一个List集合中。如果List集合不为空,则将所有提示信息使用String.join方法拼接起来输出即可。
需要注意的是,以上代码中使用了StringUtils工具类的isNotBlank方法来判断字符串是否为空,需要先将该工具类引入项目中。如果不想引入该工具类,也可以自己编写一个判断字符串是否为空的方法。
阅读全文