Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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/8/mysql/63.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
Java Sonar Qube说Objects.inNull的计算结果总是错误,导致代码生成失败_Java_Spring Data Jpa_Sonarqube - Fatal编程技术网

Java Sonar Qube说Objects.inNull的计算结果总是错误,导致代码生成失败

Java Sonar Qube说Objects.inNull的计算结果总是错误,导致代码生成失败,java,spring-data-jpa,sonarqube,Java,Spring Data Jpa,Sonarqube,出于某种原因,sonar报告(客户端报告)以下Objects.isNull始终计算为false禁用生产升级。有人能帮我理解为什么会发生这种情况,以及如何解决 Iterable<Sim> result = repository.findAllById(list); if (Objects.isNull(result)) { // Sonar thinks it always evaluates to false Iterable result=r

出于某种原因,sonar报告(客户端报告)以下Objects.isNull始终计算为false禁用生产升级。有人能帮我理解为什么会发生这种情况,以及如何解决

Iterable<Sim> result = repository.findAllById(list);
        
        if (Objects.isNull(result)) {  // Sonar thinks it always evaluates to false 
Iterable result=repository.findAllById(列表);
如果(Objects.isNull(result)){//Sonar认为它的计算结果总是为false

结果
可能为空,但它不会为
null
对象。因此,isNull()
将永远不会返回
true

如果在数据库中找不到匹配数据,
hasNext()
Iterator()返回的每个
Iterator
返回
false

虽然您在技术上能够创建自己的实现,但返回
null
可能没有意义


如果您确实想这样做并且有理由这样做,您可以在同一行中添加一个解释它的
//NOSONAR
注释,警告将消失。

result
可能是空的bot not
null
。因为
findAllById
的实现返回一个非空的iterable,其
迭代器()如果未找到与
listImsi
匹配的项,则
始终为空。这被认为是一种很好的做法,因为您可以省略空检查,就像SonarQube正确检测到的那样。@Glains-谢谢,这是否意味着findAllById从不返回空引用?我想您的意思是未说谎的
迭代器是空的,而不是
Iterable
(它没有
hasNext()
方法。另外,为什么
//NOSONAR
要保留一个总是
false
(因为它只会增加不必要的复杂性)的条件呢?@dan1st,谢谢。所以这是一个更好的选择iterable.iterator().hasNext()?.如果是,则在iterable为null的情况下不会抛出NullPointerException(在这种情况下,将对null引用调用迭代器()是的,这是一个更好的/有效的方法。NPE没有问题,因为它不会像我说的那样为null。我不知道这一点。为什么它从不返回null?你能提供文档吗reference@Rakesh请参阅以获取参考:
从不为null
。此外,如果可以为空,则没有理由返回null。为什么要提供不必要的NPE陷阱?