gpt4 book ai didi

java - 如何处理 Sonarlint java :S2259 (Null pointers should not be dereferenced)

转载 作者:行者123 更新时间:2023-12-05 02:01:46 31 4
gpt4 key购买 nike

if (res.getBody() == null || res.getBody().getServiceResult() == null) {
return; //
}

在上面的代码中,sonarlint 提示说SonarLint:可能会抛出“NullPointerException”; “getBody()”可以返回空值。 (来自 res.getBody().getServiceResult() )

我认为“res.getBody() == null”首先检查 null,因此它应该返回行,而不是到达下一个 if 条件。

我是不是想错了什么?

最佳答案

res.getBody() == null || res.getBody().getServiceResult() == null)

当您检查 res.getBody()==null 时,Sonar 检测到 res.getBody() 可以为 null。

之后,您再次调用 res.getBody()

它可能第一次是非空的,但第二次不是,声纳不知道这一点。

为了解决这个问题,只需执行以下操作:

BodyType body=res.getBody();
if (body == null || body.getServiceResult() == null) {
return;
}

之后您甚至可以重用 body

如果您绝对确定 res.getBody() 保持为 null 并且也没有被另一个线程修改,您还可以使用 //NOSONAR 注释来按顺序抑制警告。

关于java - 如何处理 Sonarlint java :S2259 (Null pointers should not be dereferenced),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66310483/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com