使用列表验证函数内的验证方法返回枚举对象

问题描述 投票:0回答:1

如果可能的话,我想用 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。有可能吗?如果可以,我该怎么做?

java validation stream
1个回答
0
投票
public FooError validateFooList(final List<Foo> fooList) {
    return fooList.stream()
            .map(this::validate)
            .filter(Objects::nonNull)
            .findFirst()
            .orElse(null);
    }

这会为每个

validate
实例调用
Foo
方法,并仅过滤(允许)非空实例,查找并返回第一个
FooError
null(如果没有)。

© www.soinside.com 2019 - 2024. All rights reserved.