Ahm*_*eim 2 java optional java-8
使用Java8,可以这样做:
Optional.ofNullable(realResult).orElse(mockResult);
Run Code Online (Sandbox Code Playgroud)
代替:
if(realResult == null)
return mockResult;
return realResult;
Run Code Online (Sandbox Code Playgroud)
问题:我们可以选择布尔到java8吗?换句话说,我们可以这样写:
Boolean.valueOf(boolVar).ifTrue(trueResult).orElse(falseResult);
Run Code Online (Sandbox Code Playgroud)
代替:
if(boolVar)
return trueResult;
return falseResult;
Run Code Online (Sandbox Code Playgroud)
编辑#1 感谢您建议三元运营,仍然想知道我们是否可以?
Pet*_*ser 13
如何使用已包含在语言中的三元运算符?
boolVar ? trueResult : falseResult
Run Code Online (Sandbox Code Playgroud)
编辑:如果你真的想要这样一个类,那就是它的样子:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
Conditional.valueOf(boolVar).ifTrue(trueResult).orElse(falseResult)
Run Code Online (Sandbox Code Playgroud)
java.lang.Boolean没有ifTrue()方法。
你可以编写自己的实现Boolean并让它做你喜欢的任何事情,但我不明白你为什么不使用现有的模式来处理布尔值,这些模式工作得很好。
有很多奇怪而美妙的可能性:
return Stream.of(Boolean.valueOf(b))
.filter(Function.identity())
.map( b -> trueResult)
.findAny()
.orElse( falseResult);
----
return Optional.of(b)
.filter(function.identity())
.map( b -> trueResult)
.orElse(falseResult);
Run Code Online (Sandbox Code Playgroud)
...但是当使用原语的三元运算符在内存和操作中都更清晰、更短且更高效时,您为什么要这样做:
return b ? trueResult : falseResult;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |