如果可能的话,我想用 Java 流来解决一个问题。这是我的代码。
class Foo {
private String name;
private String surname;
// getters and setters
}
enum FooError {
NO_NAME("Name cannot be null."), NO_SURNAME("Surname cannot be null");
private final String message;
FooError(final String message) {
this.message = message;
}
public String message() {
return message;
}
}
public FooError validate(final Foo foo) {
if (StringUtils.isBlank(foo.getName())) {
return FooError.NO_NAME;
}
if (StringUtils.isBlank(foo.getSurname())) {
return FooError.NO_SURNAME;
}
return null;
}
public FooError validateFooList(final List<Foo> fooList) {
FooError = fooList.stream()....
}
我想使用流返回列表中第一个 FooError 发生或 null。有可能吗?如果可以,我该怎么做?
public FooError validateFooList(final List<Foo> fooList) {
return fooList.stream()
.map(this::validate)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
}
这会为每个
validate
实例调用 Foo
方法,并仅过滤(允许)非空实例,查找并返回第一个 FooError
或 null(如果没有)。