如果不存在Optional的值,我想退出当前的方法/函数。

我尝试过一种幼稚的方法,将return语句放入.orElseGet(),但这似乎没有用。到目前为止,最好的替代方法似乎是:

private void foo(Set<ISomeObject> someIterable) {

    Optional<ISomeObject> myObjectOpt = someIterable
        .stream()
        .filter(...)
        .findFirst();

    if(!myObjectOpt.isPresent()){
        return;
    }

    ISomeObject myObject = myObjectOpt.get();
    // do something with myObject
}


这似乎比旧的Nullcheck可读性更好,还有其他选择吗?

最佳答案

您可以将Consumer传递给ifPresent并在使用者中执行您想做的任何事情:

private void foo(Set<ISomeObject> someIterable) {
    someIterable
        .stream()
        .filter(...)
        .findFirst()
        .ifPresent(x -> {
            // do something with x
        });
    // do nothing!
}

10-06 02:20