[英]java: how to declare final a variable that is initialized inside a try - catch block?
[英]final Entity with try catch in Java
这是我的代码:
SomeResult result = null;
try {
if(isOK) {
result = service.getOK();
}
} catch (Exception e) {
//logging
}
if(result == null) {
result = service.getKO();
}
return result;
我要让SomeResult结果最终是这样的:
final SomeResult result;
有一个出口点可以吗?
这可以通过像vavr这样的库来完成,它实现了Try
monad( 即将 try-catch
语句转换为表达式):
public SomeResult getResult() {
final SomeResult result;
result = isOK ? Try.of(service::getOK).getOrElse(service::getKO) : service.getKO();
return result;
}
但是,将值赋给局部变量的重点是什么? 它与立即返回它是一样的:
public SomeResult getResult() {
return isOK ? Try.of(service::getOK).getOrElse(service::getKO) : service.getKO();
}
...在这种情况下,您可能希望Joop的答案毕竟是多个return
语句 ,而不依赖于第三方库。
而不是分配给result
,将result =
替换为return
。 实际上删除result
。
在语义上实际上是一种“终于”。
final SomeResult result = getResult();
public SomeResult getResult(){
SomeResult result = null;
try {
if(isOK) {
result = service.getOK();
}
} catch (Exception e) {
//logging
}
if(result == null) {
result = service.getKO();
}
return result;
}
检查此链接以查看使用方法调用分配的最终变量。 https://ideone.com/UAoBTn
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.