Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring2.0FindBugsNullable即使在包装为null检查时也会抛出错误_Spring_Spring Boot_Findbugs - Fatal编程技术网

Spring2.0FindBugsNullable即使在包装为null检查时也会抛出错误

Spring2.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在某个

Findbugs抱怨springs
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),这是后续版本。