Thiemos Archiv
- Tuesday, 2011-01-25 10:27
- Java kennt keine Operator-Überladung. Objekte und damit auch Strings darf man deshalb nie mit
==
vergleichen, da das immer nur die Referenzen der beiden Objekte vergleicht, also ob es sich um ein und das selbe Objekt handelt. Das kann man hassen, aber irgendwann denkt man gar nicht mehr darüber nach. Seltsamerweise klappt es manchmal doch. Warum, ist hier relativ anschaulich erklärt. Verlassen sollte man sich darauf aber nicht, da das in einer anderen Java-Implementierung ganz anders sein kann. Verrückte Sprache. Kommentare zu diesem Beitrag können per E-Mail an den Autor gesandt werden.
Und das Fehlen von Operator-Overloading (oder Techniken mit vergleichbarem Effekt) macht sich vor allem dann unangenehm bemerkbar wenn man z.B. mathematische Algorithmen mit mehrdimensionalen Strukturen (Vektoren, Geometrie, komplexe Zahlen usw.) mit den gewohnten Operatoren schreiben will: Einfache Lesbarkeit? Fehlanzeige, das können C++, C# oder Lua allemal besser.
Ein Test auf identische Adressen/Referenzen kann mitunter z.B. dazu verwendet werden wenn man herausfinden will ob eine Zeichenkette noch mit der ursprünglich zur Initialisierung verwendeten Stringkonstante bestückt ist. Abgesehen von einigen Debug/Test-Asserts fällt mir jedoch keine Verwendung ein bei der das nicht stark nach einer potentiellen Fehlerquelle aussieht.