Java7 – Neuerung – Danke!

Heute … gestern … und auch der Tag davor – so fühlt es sich zumindest als Java-Entwickler oftmals an, wenn man mal wieder in die Situation kommt, equals() und hashCode()-Methoden in einem Objekt zu implementieren.  So führt der traditionelle Weg am Referenzvergleich, null-Check und am Ende an diversen if() ..elseif()-Checks vorbei. Diese als „verbose“ (langatmige) Implementierung kennt jeder. Etwas schicker geht es mit den ternären Operatoren (zur Erinnerung: ‚wenn ? dann : sonst‘). Obi Ezechukwu hat uns dann mit seinem compactEquals weitergeholfen, als er seine compactEquals()-Methode vorgestellt hat; er fügt die zu vergleichenden Members der zu vergleichenden Objekte einem Array hinzu,  und nutzt Arrays.equals(Object,Object). Ein ähnlich umständliches Verfahren wird bekannterweise auch für der Überschreiben der hashCode()-Methode eingegangen, was ja notwendig ist, wenn die equals()-Methode eines Objekts überschrieben wird.

IDEs wie IntelliJ, Netbeans und Eclipse helfen natürlich bei der automatischen Erstellung der Methoden in altertümlichem Sinne, was den Stil allerdings auch nicht schöner macht.

Mit der Einführung von Java7, können equals() und hashCode() nun recht komfortabel, objektweise erstellt werden.

 

 

Hingewiesen sei hier auch noch auf die deepEquals()-Methode der Objects-Klasse.

 

Quellen: http://docs.oracle.com/javase/7/docs/api/java/util/Objects.html

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.