Jeder der schonmal etwas mehr mit Java gearbeitet hat kennt sie, die Nullpointer-Exception, also der versuchte Zugriff auf ein Objekt welches nicht initialisiert wurde und demnach null ist.
Eine beliebete Fehlerquelle ist dabei die Methode equals(), mit der man zum Beispiel Strings vergleichen kann. Oft wird dabei ein String, also ein Objekt, mit einer Konstanten verglichen:
if(meinString.equals("rot")){ // do sth. } |
Hier kann es schnell zu einer Exception kommen, nämlich genau dann, wenn meinString null ist, also nicht initialisiert wurde. Das Problem taucht natürlich erst während der Laufzeit auf und nicht schon während des Kompilierens. Ein kleiner Kniff hilft aber das Problem zu eleminieren:
if("rot".equals(meinString)){ // do sth. } |
Dreht man nämlich die Werte um und setzt die Konstante an den Anfang, kann kein Nullpointer mehr auftreten. Ist meinString == null, wird „rot“ mit „null“ verglichen, kein Problem, denn die Methode equals() wird am auf jeden Fall initialisiert String „rot“ aufgerufen. So hat man eine Gefahrenquelle umschifft und kann problemlos Werte mit null vergleichen.
Eine gute IDE wie Eclipse (ab 3.5) weißt den Programmierer übrigens auch auf diesen Trick hin.
Der Trick klappt natürlich auch grundsätzlich in jeder anderen objektorientierten Programmiersprache mit Konstanten.
Tobi,
hast also doch mal bei dem „ebend“ EBS Typen aufgepasst…
Ja, das auch, aber derzeit mache ich das auch so hier, ist sinnvoll ;)