修复声纳违规并发出警告"等于避免空:
字符串文字表达式应位于等于比较的左侧。"为:
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
在其他一两篇文章中,但我不知道问题是什么......
答案 0 :(得分:2)
警告告诉您,我们不确定title
是不是null
。但是,根据定义,文字(例如空字符串)永远不能为空。由于equals
可以处理null
作为参数,因此您可以通过编写NullPointerException
来避免潜在的<literal>.equals(<somebject>)
。如果您未在if语句中使用title
,则无需进一步进行空值检查:
if(!"".equals(title)){
//rest of loop
}
但是,由于您正在检查某些内容是否等于文字,因此让空值通过是没有意义的。
docs也有相关说明:
此外,在equals之前看到null检查是很常见的 比较不必要[...]