如果是可选项,我该怎么办? 不存在或存在但是空字符串?

问题描述 投票:4回答:3

我似乎无法找到一种更简洁的方法来做到这一点

Optional<String> foo;
if (!foo.isPresent() || StringUtils.isBlank(foo.get())) {
  // ...
}

有这个,但它实际上使逻辑更复杂,IMO:

Optional<String> foo;
if (!foo.filter(StringUtils::isNotBlank).isPresent()) {
  // ...
}

觉得我错过了一些非常明显的东西。

java optional
3个回答
6
投票

也许这就是你要找的东西。

Optional.of("")
        .filter(not(String::isBlank)))
        .orElseThrow(() -> new MyException("..."));

你会在not下找到Predicate

显然,这比使用if语句效率低,但它有它的位置。

啊,好的,你的评论后更清楚了。使用orElseThrow


3
投票

使用Java 11,您可以使用Predicate#notOptional#isEmptyString#isBlank更简洁:

Optional<String> foo = ...;

if (foo.filter(not(String::isBlank)).isEmpty()) {
    // ...
}

只有当foo已经为空或String包含的foo为空String时,才会输入if语句体。


1
投票

如果字符串不存在,您可以使用Optional#orElse()来填充空字符串,然后在结果上使用StringUtils.isBlank()

Optional<String> foo;

if (StringUtils.isBlank(foo.orElse(""))) {
    // ...
}
© www.soinside.com 2019 - 2024. All rights reserved.