首页 > 解决方案 > 从函数返回,一旦函数中的值为空

问题描述

如果 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 更好的可读性,还有其他选择吗?

标签: javajava-8optional

解决方案


您可以将 a 传递ConsumerifPresent并在消费者中做任何您想做的事情:

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

推荐阅读