代码之家  ›  专栏  ›  技术社区  ›  unj2

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

  •  8
  • unj2  · 技术社区  · 15 年前

    我有

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

    但是PMD说

    Position literals first in String comparisons
    
    5 回复  |  直到 8 年前
        1
  •  24
  •   Adam    15 年前

    "TaxName".equals(localName) 似乎更好 localName 为空,则不会得到空指针异常。

        2
  •  8
  •   matt b    15 年前

    PMD也应该告诉你 为什么 它会生成此警告。从 the rules documentation 在PMD网站上:

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

        3
  •  5
  •   Eyal Schneider    15 年前

    我喜欢先定位文字,即:

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

    通过这种方式,您可以对空的情况进行正确的比较,而不是获取NullPointerException。

        4
  •  2
  •   Melody Horn    15 年前

    就我个人而言,这对我没有意义。如果代码捕获到NullPointerException,那么它已经完成了以后不必做的工作。如果localname最终为空,这会在稍后引起问题,那么就很难跟踪它。不要为了让编译器满意而更改代码。如果您的代码抛出了NullPointerException,那么它将为您节省稍后的调试时间。

        5
  •  -1
  •   Genzotto    8 年前

    为了避免出现这种警告,一个更简单的解决方案是检查空指针,建议在我们管理的每个对象中使用wich,不仅仅是在这种情况下:

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