Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.4
-
None
Description
ToStringStyle.registry ThreadLocal initialValue should return a Set that implements reference equality checking instead of object equality.
This change would still protect against cyclical object graphs, but also protect against the following conditions:
- Incorrect implementations of hashCode/equals for any objects in the object graph
- Unintended side effects of the hashCode/equals methods for any objects in the object graph
Unfortunately, Java versions prior to 1.6 do not provide a simple built-in mechanism to create such a Set. This issue is discussed here in detail:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4479578
A possible work-around is to use an IdentityHashMap instead of a Set. This class is available in Java 1.4 and later.