ura*_*aza 13 java if-statement optional java-8
经过一番阅读后我才看到了
if (optional.isPresent()) {
//do smth
}
Run Code Online (Sandbox Code Playgroud)
不是使用Optional的首选方法(http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html).但如果我有这样的if语句:
if (optional.isPresent()) {
car = getCar(optional.get());
} else {
car = new Car();
car.setName(carName);
}
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?还是有更推荐的方法?
The*_*ect 28
您可以使用Optional如下.
Car car = optional.map(id -> getCar(id))
.orElseGet(() -> {
Car c = new Car();
c.setName(carName);
return c;
});
Run Code Online (Sandbox Code Playgroud)
使用if-else语句编写是命令式样式,它需要car在if-else块之前声明变量.
使用mapin Optional是更实用的风格.并且这种方法不需要事先进行变量声明,是推荐的使用方法Optional.
如果您可以将名称合并到Car构造函数中,那么您可以这样写:
car = optional.map(id -> getCar(id))
.orElseGet(() -> new Car(carName));
Run Code Online (Sandbox Code Playgroud)
如果你必须从构造函数中单独调用setter,你最终会得到这样的结果:
car = optional.map(id -> getCar(id))
.orElseGet(() -> {
Car c = new Car();
c.setName(carName);
return c;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18269 次 |
| 最近记录: |