java - 我们可以像Optional(ifPresent和orElse)一样在Java8中采用 boolean 值吗

标签 java java-8 option-type

使用 Java8,可以做到这一点:

Optional.ofNullable(realResult).orElse(mockResult);

而不是:

if(realResult == null)
    return mockResult;
return realResult;
<小时/>

问题:我们可以将 boolean 值转换为 java8 吗?或者换句话说,我们可以写这样的东西:

Boolean.valueOf(boolVar).ifTrue(trueResult).orElse(falseResult);

而不是:

if(boolVar)
    return trueResult;
return falseResult;

编辑#1 感谢您建议三元运算,仍然想知道我们是否可以?

最佳答案

使用语言中已包含的三元运算符怎么样?

boolVar ? trueResult : falseResult

编辑:如果你真的想要这样的类(class),那就是这样的:

public class Conditional<T> {

    private final boolean condition;
    private T valueWhenTrue;

    public static Conditional valueOf(boolean condition) {
        return new Conditional(condition);
    }

    private Conditional(boolean condition) {
        this.condition = condition;
    }

    public Conditional ifTrue(T valueWhenTrue) {
        this.valueWhenTrue = valueWhenTrue;
        return this;
    }

    public T orElse(T valueWhenFalse) {
        return condition ? valueWhenTrue : valueWhenFalse;
    }
}

用法:

Conditional.valueOf(boolVar).ifTrue(trueResult).orElse(falseResult)

关于java - 我们可以像Optional(ifPresent和orElse)一样在Java8中采用 boolean 值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45797504/

相关文章:

arrays - 如何使用可选的多个条件在 Swift 中过滤数组?

java - 是否有 Java 8 .or() 返回当前值或提供的默认值的可选?

java - Spring注解的区别

java - libgdx 瓦片 map 中的单位比例

java - 为什么 array[idx++]+ ="a"在 Java 8 中增加 idx 一次,但在 Java 9 和 10 中增加两次?

java - 如何根据另一个bean的属性注入(inject)一个bean?

Java 8 Lambda - 分组和减少对象

Java 可选 orElse

java - 启动创意时出错。无法加载 JVM DLL C :\Program Files\Java\jdk1. 8.0_112

Java:替换新文件