11

我有

if (localName.equals("TaxName")) {

但PMD说

Position literals first in String comparisons
4

5 回答 5

28

"TaxName".equals(localName)好象localName是 null 你不会得到一个空指针异常。

于 2010-06-23T20:44:59.360 回答
8

PMD 还应该告诉您为什么它会生成此警告。从PMD 网站上的规则文档:

在字符串比较中首先定位文字 - 这样如果字符串为空,您将不会得到 NullPointerException,它只会返回 false。

于 2010-06-23T20:46:11.220 回答
5

我更喜欢首先定位文字,即:

if ("TaxName".equals(localName)) { ...

这样你就可以对 null 的情况进行正确的比较,而不是得到 NullPointerException。

于 2010-06-23T20:46:00.513 回答
2

就个人而言,这对我来说没有意义。如果代码捕获到 NullPointerException,那么它已经完成了您以后不必做的工作。如果 localName 最终为空,这会导致稍后出现问题,那么跟踪将变得更加困难。不要更改代码以使编译器满意。如果您的代码抛出 NullPointerException,那么它可以为您节省以后的调试时间。

于 2010-06-23T20:50:39.600 回答
-1

为了避免该警告,一个更简单的解决方案是在之前检查空指针,我们建议在我们管理的每个对象中都这样做,不仅在这种情况下:

if (localName!=null && localName.equals("TaxName")) {
    ...
}
于 2016-09-12T11:04:24.343 回答