Domanda

ho

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

ma PMD dice

Position literals first in String comparisons
È stato utile?

Soluzione

"TaxName".equals(localName) è meglio come se localName è nullo non sarà possibile ottenere un'eccezione di puntatore nullo.

Altri suggerimenti

PMD dovrebbe anche essere che ti dice perché che genera questo avviso. Da il documentazione di regole sul sito PMD:

  

letterali prima posizione in confronto String -. In questo modo se la stringa è nulla non sarà possibile ottenere un NullPointerException, sarà solo return false

Io preferisco letterali prima posizione, vale a dire:

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

In questo modo si fa un confronto giusto per il caso di null, invece di ottenere NullPointerException.

Personalmente, che non ha senso per me. Se il codice cattura un NullPointerException, allora è un lavoro fatto, non si dovrà fare in seguito. Se localName finisce per essere nulla, e che causa un problema in seguito, allora sarà più difficile da rintracciare. Non modificare il codice per rendere il compilatore felice. Se il codice genera un NullPointerException, allora si è salvato il debug secondo momento.

Per evitare questo avvertimento, una soluzione più semplice è nullpointers controllo prima, wich è raccomandato in ogni oggetto riusciamo, non solo in questo caso:

if (localName!=null && localName.equals("TaxName")) {
    ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top