2016-04-08 15 views
0

warum dieser CodeJava String Vergleich best practice

"name".equals(person.getName()); 

ist besser als

person.getName().equals("name"); 
+3

'" name "' wird nie Null sein – zec

+2

'person.getName()' könnte 'null' zurückgeben, aber ob das Ignorieren eines 'null'-Werts besser ist als das Werfen einer Ausnahme ist umstritten. –

+0

# 2 hat ein Problem: Person und 'getName' sind wahrscheinlich null zurückgeben. Sie müssen mindestens einen Null-Check für Person und getName() einschließen (es sei denn, Sie verfügen über einen anderen Mechanismus, der garantiert, dass der letztere niemals null ist – kolossus

Antwort

4

Ich ziehe den Yoda Expression"name".equals(person.getName());, da es bedeutet, dass Sie brauchen nicht zu prüfen, ob person.getName()null ist . Das spart ein wenig Tipparbeit und ist wohl klarer, sobald man sich daran gewöhnt hat. In Ihrem Fall müssen Sie immer noch prüfen, ob person nicht null ist.

0

Weil die Konstante "name" nie null sein kann.

"name".equals(null) 

ist gültig und wird false zurück, während

String personName = null; 
personName.equals("name"); 

eine NullPointerException

1
"name".equals(person.getName()); 

Dieser Code werfen Null-Zeiger-Ausnahme vermeiden.