英文:
Efficient null check in Java 11
问题
需要使用对象中深层嵌套的getter。
response.getServiceError().getErrorCode()
可能有一个或多个对象为空的情况。现在,我正在这样做:
if (response != null && response.getServiceError() != null && response.getServiceError().getErrorCode() != null && response.getServiceError().getErrorCode().equals("errCode123")) {
// 做一些操作;
}
是否有更好和/或更优雅的方式来构建这个if条件?
英文:
I need to use a getter which is 3 levels down in the object.
response.getServiceError().getErrorCode()
It is possible one or more objects could be NULL. Now, I am doing this
if (response != null && response.getServiceError() != null && response.getServiceError().getErrorCode() != null && response.getServiceError().getErrorCode().equals("errCode123")) {
//doSomething;
}
Is there a better and/or elegant way to construct that if condition?
答案1
得分: 9
使用Optional
!
Optional.ofNullable(response)
.map(Response::getServiceError)
.map(ServiceError::getErrorCode)
.filter(code -> code.equals("errCode123"))
.ifPresent(code -> {
// 做某事
});
英文:
Use Optional
!
Optional.ofNullable(response)
.map(Response::getServiceError)
.map(ServiceError::getErrorCode)
.filter(code -> code.equals("errCode123"))
.ifPresent(code -> {
// doSomething
});
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论