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

unj*_*nj2 10 java pmd

我有

if (localName.equals("TaxName")) {
Run Code Online (Sandbox Code Playgroud)

但是PMD说

Position literals first in String comparisons
Run Code Online (Sandbox Code Playgroud)

Ada*_*dam 26

"TaxName".equals(localName)更好,如果localName是null您将不会得到空指针异常.

  • 如果您想要允许,那只会更好.就个人而言,我不记得这样的情况,即我的代码中的错误不是我想尽快捕获的. (5认同)

mat*_*t b 8

PMD还应该告诉你它为什么会产生这个警告.从PMD网站上的规则文档:

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

  • 在某些情况下,如果变量为null,则代码应将其视为不等于字符串。在其他情况下,它表明存在问题,并且标记问题的速度越快越好。在后一种情况下,`variable.equals(“ literal”)`更好,因为如果variable为null,它将被捕获。 (2认同)

Eya*_*der 5

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

if ("TaxName".equals(localName)) { ...
Run Code Online (Sandbox Code Playgroud)

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