首页 > 解决方案 > 从 Java 中返回可选 ifPresent()

问题描述

我了解您无法从 a 返回,ifPresent()因此此示例不起作用:

public boolean checkSomethingIfPresent() {
    mightReturnAString().ifPresent((item) -> {
        if (item.equals("something")) {
            // Do some other stuff like use "something" in API calls
            return true; // Does not compile
        }
    });
    return false;
}

WheremightReturnAString() 可以返回一个有效的字符串或一个空的可选项。我所做的工作是:

public boolean checkSomethingIsPresent() {
    Optional<String> result = mightReturnAString();

    if (result.isPresent()) {
        String item = result.get();
        if (item.equals("something") {
            // Do some other stuff like use "something" in API calls
            return true;
        }
    }
    return false;
}

这更长,并且与首先检查空值没有太大区别。我觉得必须有一种更简洁的方式使用 Optional。

标签: javajava-8optional

解决方案


我认为您正在寻找的只是filter然后检查是否存在:

return result.filter(a -> a.equals("something")).isPresent();

推荐阅读