在Java 8中,我有一个变量,持有一个可选的布尔值。
如果可选项不为空,并且包含的布尔值为true,我想要执行一个操作。
我在做class Present<T> extends Optional<T>
这样的事情,这里有一个完整的例子:
ifPresentAndTrue
答案 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());
这包括三个部分:
Optional.ofNullable(booleanValue)
-检查空值.filter(p -> p).map(m -> callFunctionWhenTrue())
-过滤器检查布尔值true并正确地应用map函数.orElse(doSomethingWhenFalse())
-如果布尔值为false,则将执行此部分