首页 / JAVA / java-使用可选参数重写服务请求
java-使用可选参数重写服务请求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用可选参数重写服务请求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1847字,纯文字阅读大概需要3分钟。
内容图文
![java-使用可选参数重写服务请求](/upload/InfoBanner/zyjiaocheng/686/35c924dbc6b74b34a4a4c544c7dc6bd4.jpg)
我想使用Optionals重写下面的代码(我不控制jpaConnector):
public boolean deleteLockStatus() {
IMdss service = jpaConnector.getMdssService();
if ( service == null ) {
return false;
}
ServiceResponse response = null;
try {
response = service.deleteLockStatus();
} catch (Exception e) {
e.printStackTrace();
}
if ( response == null ) {
return false;
}
if ( response.isError() ) {
return false;
}
return true;
}
到目前为止,我已经做到了:
public boolean deleteLockStatus() {
Optional<IMdss> service = Optional.ofNullable(jpaConnector.getMdssService());
if (!service.isPresent()) { return false; }
Optional<ServiceResponse> response = Optional.empty();
try {
response = Optional.ofNullable(service.get().deleteLockStatus());
if ( response.isPresent() == false || response.get().isError() ) {
return false;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
有没有更好,更本地的Java 8方法?谢谢!!!
解决方法:
我们从Optional< Service>平面图开始,该平面映射到Optional< ServiceResponse> (使用常规映射功能将为我们提供Optional< Optional< ServiceResponse>)),然后将其映射到Optional< Boolean>.
可选的< Boolean>表示响应成功或失败.如果此处没有值,则会引发异常,因此我们使用orElse(false)返回false.
对于已检查的异常以及必须打印堆栈跟踪信息感到遗憾,否则可能会更加简洁.
public boolean deleteLockStatus() {
return Optional.ofNullable(jpaConnector.getMdssService())
.flatMap(service -> {
try {
return Optional.ofNullable(service.deleteLockStatus());
}
catch(Exception e) {
e.printStackTrace();
return Optional.empty();
}
})
.map(ServiceResponse::isError)
.orElse(false);
}
旁注:catching Exception is usually a bad idea.您应该尽可能具体.如果可能引发多个异常,请考虑使用this syntax.
如Federico的注释中所述,如果您不介意使用null,则可以用这种稍微的简化来替换flatMap.我个人更喜欢上面的版本.
.map(service -> {
try {
return service.deleteLockStatus();
}
catch(Exception e) {
e.printStackTrace();
return null;
}
})
内容总结
以上是互联网集市为您收集整理的java-使用可选参数重写服务请求全部内容,希望文章能够帮你解决java-使用可选参数重写服务请求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。