繁体   English   中英

声纳等于避免空违反

[英]Sonar Equals Avoid Null Violation

修复声纳违规并得到警告“等于避免为空:
字符串文字表达式应位于等号比较的左侧。”

if (title != null && !title.equals("")) {
//rest of loop
}

我将其更改为:

if(!("").equals(title) && title != null){
//rest of loop
}

那可以吗? 它会解决违规问题吗? 有人可以向我解释为什么原件是违法的吗? 我不了解此问题,并已阅读: https : //sonar43.spring.io/rules/show/checkstyle : com.puppycrawl.tools.checkstyle.checks.coding.EqualsAvoidNullCheck?layout=false

其他一两篇文章中,但我仍然看不出问题出在哪里...

警告告诉您不确定title是否为null 但是,文字,例如空字符串,根据定义永远不能为空。 并且由于equals可以将null作为参数处理,因此您可以通过编写<literal>.equals(<somebject>)来避免潜在的NullPointerException 如果您不在if语句中使用title ,则无需进行进一步的null检查:

if(!"".equals(title)){
    //rest of loop
}

但是,由于要检查某些内容是否等于文字,因此让null值通过几乎没有意义。

文档还具有以下相关注释:

另外,很常见的是在等于比较之前看到空检查,这是不必要的[...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM