Spring2.0FindBugsNullable即使在包装为null检查时也会抛出错误
Findbugs抱怨springsSpring2.0FindBugsNullable即使在包装为null检查时也会抛出错误,spring,spring-boot,findbugs,Spring,Spring Boot,Findbugs,Findbugs抱怨springsHttpEntity.getBody(),这让我很难接受 下面您将看到我调用response.getBody().length,我知道这可能会导致NPE。然而,当我将它包装在if(response.getBody()!=null)中时,它仍然会抱怨。它仅在Spring2.0(而不是1.5)中执行此操作,它似乎与添加到方法中的@Nullable注释有关 我能得到一个解释吗?为什么即使我用空检查来包装它,当我得到它的长度时,它仍然会抱怨 错误类型NP\u空\u在某个
HttpEntity.getBody()
,这让我很难接受
下面您将看到我调用response.getBody().length
,我知道这可能会导致NPE。然而,当我将它包装在if(response.getBody()!=null)中时,它仍然会抱怨。它仅在Spring2.0(而不是1.5)中执行此操作,它似乎与添加到方法中的@Nullable
注释有关
我能得到一个解释吗?为什么即使我用空检查来包装它,当我得到它的长度时,它仍然会抱怨
错误类型NP\u空\u在某个路径上\u从\u返回\u值
ResponseEntity<SomeClass[]> response = restTemplate.exchange(someUrl, HttpMethod.GET, httpEntity,
SomeClass[].class);
for (int i = 0; response.getBody().length > i; i++) {
doSomething()
}
ResponseEntity response=restemplate.exchange(someUrl、HttpMethod.GET、httpEntity、,
SomeClass[]类);
对于(int i=0;response.getBody().length>i;i++){
doSomething()
}
根据发生这种情况的原因是:
'方法的返回值在不进行null检查的情况下被取消引用,并且该方法的返回值通常应进行null检查。这可能会在执行代码时导致NullPointerException。”
修正方法:
Optional <T> body = Optional.ofNullable(response.getBody);
if (body.isPresent()) {
//use body
}
Optional body=Optional.ofNullable(response.getBody);
if(body.isPresent()){
//使用主体
}
您会收到警告,因为getBody方法已被注释为可为null,并且spotBugs/findbugz希望在使用该值之前进行显式null检查。对我来说效果很好。我希望我记得我们做了什么,但我认为我们必须升级到Spotbug(来自findBugs),这是后续版本。