Re: Fixing "typos" in enums...
On 11/18/2013 3:09 PM, Andreas Leitgeb wrote:
Eric Sosman <esosman@comcast-dot-net.invalid> wrote:
On 11/18/2013 1:25 PM, Andreas Leitgeb wrote:
It would be nice, if enum had the concept of synonyms:
<dream-mode>
- each synonym is an alias for a particular constant
- synonyms would be recognized by valueOf(String)
- synonyms could be annotated as @Deprecated
- synonyms could be used in a switch, but then the
canonical name (or any other synonym for the same
constant) must not be used in the same switch.
</dream-mode>
Well, I know it's not going to happen. Just wanted it off my chest ;-)
It'd make a mess of EnumMaps, too ...
Nope, don't see what you mean here. The synonyms wouldn't be
separate extra instances, of course, so by the time I'm holding
an instance, its .name() is the canonical one.
Also, if "C" is a canonical constant of enum Foo, and "S" a
synonym of "C" in Foo, then (Foo.S==Foo.C) would be true.
Sorry; I didn't pay close enough attention to the details
of your dream. :) Still, you've got to admit it might be a
wee bit confusing if you did
theMap.clear();
assert theMap.size() == 0; // Okay, it's empty.
theMap.put(Foo.C, "FIRST");
assert theMap.size() == 1; // Okay, one mapping.
theMap.put(Foo.S, "FURST");
assert theMap.size() == 2; // Why does this fail???
I don't think there's any single Right Way to address your
problem, no one-size-fits-all solution. Elsethread it's written
that a published API is "set in stone," but there are many kinds
of stone. Of all posters to this thread, only you know whether
the stone is obsidian or talc; only you know how hard a tool is
required to scratch it.
Nice parable :) Yep, there's some material analysis ahead.
Perhaps a trifle over-poetic, but there's serious intent.
There'll be some amount of pain no matter which route you take,
and you're better able to assess it than any of us is.
--
Eric Sosman
esosman@comcast-dot-net.invalid