如果可选的布尔值为true,如何执行操作?

sla*_*dan 11 java boolean optional java-8

在Java 8中,我有一个变量,持有一个可选的布尔值.

如果可选项不为空,并且包含的​​布尔值为true,我想要执行一个操作.

我在做一些类似的事情ifPresentAndTrue,这里有一个完整的例子:

import java.util.Optional;

public class X {
  public static void main(String[] args) {
    Optional<Boolean> spouseIsMale = Optional.of(true);
    spouseIsMale.ifPresentAndTrue(b -> System.out.println("There is a male spouse."));
  }
}
Run Code Online (Sandbox Code Playgroud)

Joo*_*gen 21

为了良好的秩序

if (spouseIsMale.orElse(false)) {
    System.out.println("There is a male spouse.");
}
Run Code Online (Sandbox Code Playgroud)

明确.

  • 不过,如果能够放弃不必要的代码“orElse(false)”,那就太好了。这就像写“if (myBoolVariable == true)” - 我从不写“== true”......但尽管如此,我也使用这个确切的代码,因为它是最干净、快速且易于理解的。 (2认同)

小智 8

对于那些希望在没有传统的情况下编写此内容的人 if(condition){ //Do something if true; }

Optional.of(Boolean.True)
    .filter(Boolean::booleanValue)
        .map(bool -> { /*Do something if true;*/ })
Run Code Online (Sandbox Code Playgroud)


sla*_*dan 6

可以通过以下方式实现该行为.filter(b -> b)

spouseIsMale.filter(b -> b).ifPresent(b -> System.out.println("There is a male spouse."));
Run Code Online (Sandbox Code Playgroud)

但是,它需要花一些大脑执行时间才能了解这里发生的情况。

  • filter(Function :: identity)炫耀。 (2认同)