Tom Anderson wrote:
I won't argue with you about Strings.
But Joshua was talking about using instances of Color, where those
instances are singletons (well, flyweights is probably the right term
when there are several of them), exposed in static final fields on
Color, and the class is written in a certain way, which i take to mean
having a private constructor, not creating any instances other than
those in the statics, and implementing readResolve. In that case, how
can there be pairs of instances for which .equals is true and == isn't?
Colour doesn't make such instances, no other class can make such
instances directly, serialization won't, and sun.misc.Unsafe is a foul.
Indeed, this is exactly what enums do, so why do you think classes can't?
We're talking apples and oranges here. I made a mistake and it's my
fault. I was focused on String constants and should not have used
'Color' instances as an example, but 'Foo'. In my mind I had conflated
the examples and was imagining a fictitious 'Color' class with Strings
not 'Color' instances, and that was where I went wrong.
Ah, i thought it was probably something like that.