我有
if (localName.equals("TaxName")) {
但PMD说
Position literals first in String comparisons
"TaxName".equals(localName)
好象localName
是 null 你不会得到一个空指针异常。
PMD 还应该告诉您为什么它会生成此警告。从PMD 网站上的规则文档:
在字符串比较中首先定位文字 - 这样如果字符串为空,您将不会得到 NullPointerException,它只会返回 false。
我更喜欢首先定位文字,即:
if ("TaxName".equals(localName)) { ...
这样你就可以对 null 的情况进行正确的比较,而不是得到 NullPointerException。
就个人而言,这对我来说没有意义。如果代码捕获到 NullPointerException,那么它已经完成了您以后不必做的工作。如果 localName 最终为空,这会导致稍后出现问题,那么跟踪将变得更加困难。不要更改代码以使编译器满意。如果您的代码抛出 NullPointerException,那么它可以为您节省以后的调试时间。
为了避免该警告,一个更简单的解决方案是在之前检查空指针,我们建议在我们管理的每个对象中都这样做,不仅在这种情况下:
if (localName!=null && localName.equals("TaxName")) {
...
}