字符串比较中文字的正确位置是什么?

时间:2010-06-23 20:42:28

标签: java pmd

我有

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

但是PMD说

Position literals first in String comparisons

5 个答案:

答案 0 :(得分:24)

"TaxName".equals(localName)更好,因为localName为空,您将不会获得空指针异常。

答案 1 :(得分:8)

PMD也应该告诉你为什么它会产生这个警告。来自PMD网站上的the rules documentation

  

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

答案 2 :(得分:5)

我更喜欢先放置文字,即:

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

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

答案 3 :(得分:2)

就个人而言,这对我来说没有意义。如果代码捕获到NullPointerException,那么它就完成了以后你不必再做的工作。如果localName最终为null,并且稍后会导致问题,则跟踪将更加困难。不要更改代码以使编译器满意。如果你的代码抛出NullPointerException,那么它会在稍后保存你的调试时间。

答案 4 :(得分:-1)

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

if (localName!=null && localName.equals("TaxName")) {
    ...
}