【发布时间】:2021-08-18 21:06:54
【问题描述】:
运行 FindBugs 时出现以下错误:
错误类型 NP_NULL_ON_SOME_PATH。
给出错误的代码如下:
List<Request> reviewerList = null;
response = restAPI CAll // assume some rest call.
reviewerListDto = response.getBody(); //it never returns null
// this check is added because of find bugs, else it wont allow to access getReviewers() method
if (reviewerListDto!=null) {
reviewerList = reviewerListDto.getReviewers();
}
// HERE is the point I am stuck
for (Request reviewer : reviewerList) {
reviewer.setPullrequestId(pullrequest.getId());
reviewer.setRepositoryId(pullrequest.getRepositoryId());
}
错误即将到来,因为根据 for 循环中的 FindBugs,reviewerList 可以为空。但我知道它永远不会是null。删除它的一种方法是在 for 循环之前检查 reviewerList 是否为 null,但是还有其他方法吗?
【问题讨论】:
-
reviewerList保持null如果reviewerListDto等于null -
是的,但 reviewerListDto 永远不会为空。我补充说如果条件 eviewerListDto!=null 因为发现错误警告
-
我相信,通过添加
if(reviewerListDto!=null) {,您是在指示 Findbugs,response.getBody实际上可以返回null。 -
但如果我不输入 if,那么我将无法访问 reviewerListDto.getReviewers();因为它认为它可以是 NPE
标签: java spring-boot gradle compilation findbugs