Я имею
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 в конечном итоге будет равен null, и это вызовет проблему позже, то его будет сложнее отследить. Не изменяйте код, чтобы сделать компилятор счастливым. Если код выдает исключение NullPointerException, то он экономит время отладки позже.