mkU*_*tra 3 java final exception
这是我的代码:
SomeResult result = null;
try {
if(isOK) {
result = service.getOK();
}
} catch (Exception e) {
//logging
}
if(result == null) {
result = service.getKO();
}
return result;
Run Code Online (Sandbox Code Playgroud)
我要让SomeResult结果最终是这样的:
final SomeResult result;
Run Code Online (Sandbox Code Playgroud)
有一个出口点可以吗?
这可以通过像vavr这样的库来完成,它实现了Trymonad(即将try-catch语句转换为表达式):
public SomeResult getResult() {
final SomeResult result;
result = isOK ? Try.of(service::getOK).getOrElse(service::getKO) : service.getKO();
return result;
}
Run Code Online (Sandbox Code Playgroud)
但是,将值赋给局部变量的重点是什么?它与立即返回它是一样的:
public SomeResult getResult() {
return isOK ? Try.of(service::getOK).getOrElse(service::getKO) : service.getKO();
}
Run Code Online (Sandbox Code Playgroud)
...在这种情况下,您可能希望Joop的答案return毕竟是多个语句,而不依赖于第三方库.
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |