如果可能的话,我想用 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()....
}
Run Code Online (Sandbox Code Playgroud)
我想使用流返回列表中第一个 FooError 发生或 null。这可能吗?如果可以,我该怎么做?
public FooError validateFooList(final List<Foo> fooList) {
return fooList.stream()
.map(this::validate)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
}
Run Code Online (Sandbox Code Playgroud)
这会调用validate每个Foo实例的方法并仅过滤非空值,查找并返回流中的FooError第一个值,如果没有则返回null 。FooError
| 归档时间: |
|
| 查看次数: |
31 次 |
| 最近记录: |