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

时间:2017-10-16 08:55:06

标签: java java-8 boolean optional

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

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

我在做class Present<T> extends Optional<T>这样的事情,这里有一个完整的例子:

ifPresentAndTrue

6 个答案:

答案 0 :(得分:20)

为了良好的秩序

if (spouseIsMale.orElse(false)) {
    System.out.println("There is a male spouse.");
}

清除。

答案 1 :(得分:3)

使用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.")); } }

可以实现这种行为
.filter(b -> b)

但是,要花一些大脑执行时间秒才能理解这里发生的事情。

答案 2 :(得分:2)

以上所有答案组合在一起:

spouseIsMale
.filter(Boolean::booleanValue)
.ifPresent(
  value -> System.out.println("There is a male spouse.")
);

答案 3 :(得分:1)

对于那些希望在没有传统的情况下写这篇文章的人 if(condition){ //Do something if true; }

Optional.of(Boolean.True)
    .filter(Boolean::booleanValue)
        .map(bool -> { //Do something if true; })

答案 4 :(得分:0)

你可以缩小一点。

Optional<Boolean> spouseIsMale= Optional.of(true);
spouseIsMale.ifPresent(v -> { if (v) System.out.println("There is a male spouse.");});

答案 5 :(得分:0)

我通常使用的是(我还要检查null值):

Optional.ofNullable(booleanValue).filter(p -> p).map(m -> callFunctionWhenTrue()).orElse(doSomethingWhenFalse());

这包括三个部分:

  1. Optional.ofNullable(booleanValue)-检查空值
  2. .filter(p -> p).map(m -> callFunctionWhenTrue())-过滤器检查布尔值true并正确地应用map函数
  3. .orElse(doSomethingWhenFalse())-如果布尔值为false,则将执行此部分