Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #26547

Re: Fixing "typos" in enums...

From Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at>
Newsgroups comp.lang.java.programmer
Subject Re: Fixing "typos" in enums...
Date 2013-11-18 20:09 +0000
Organization A noiseless patient Spider
Message-ID <slrnl8ksvr.42s.avl@gamma.logic.tuwien.ac.at> (permalink)
References <slrnl8cing.mol.avl@gamma.logic.tuwien.ac.at> <l67d4o$7bl$1@news.albasani.net> <slrnl8kmsm.42s.avl@gamma.logic.tuwien.ac.at> <l6dn7i$i9a$1@dont-email.me>

Show all headers | View raw


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.

Part of that "extension" can be mimicked by creating a static
final field in the enum by synonym's name initialized to its
canonical meaning.

Maybe valueOf() for a particular enum could be patched by
means of bytecode "instrumentation" to fall back to some
HashMap<String,Foo> of synonyms, if canonical name lookup
fails. Not sure, if the bytecode verifier would accept
thusly patched valueOf() implementations upon loading
Foo.class

Unfortunately, it is not feasible to hook into the compiler
to make it accept arbitrary static final fields of the enum
as switch case-labels.

>      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.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-15 16:25 +0000
  Re: Fixing "typos" in enums... markspace <markspace@nospam.nospam> - 2013-11-15 09:05 -0800
    Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 17:20 +0000
      Re: Fixing "typos" in enums... markspace <markspace@nospam.nospam> - 2013-11-18 09:33 -0800
        Re: Fixing "typos" in enums... Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-11-18 13:37 -0500
        Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 18:58 +0000
          Re: Fixing "typos" in enums... markspace <markspace@nospam.nospam> - 2013-11-18 11:35 -0800
            Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 20:34 +0000
  Re: Fixing "typos" in enums... Robert Klemme <shortcutter@googlemail.com> - 2013-11-15 20:10 +0100
    Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 17:29 +0000
      Re: Fixing "typos" in enums... Robert Klemme <shortcutter@googlemail.com> - 2013-11-18 19:38 +0100
        Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 19:34 +0000
  Re: Fixing "typos" in enums... Jan Burse <janburse@fastmail.fm> - 2013-11-16 10:16 +0100
    Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 18:25 +0000
      Re: Fixing "typos" in enums... Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-11-18 13:45 -0500
        Re: Fixing "typos" in enums... Robert Klemme <shortcutter@googlemail.com> - 2013-11-18 20:20 +0100
        Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-18 20:09 +0000
          Re: Fixing "typos" in enums... Eric Sosman <esosman@comcast-dot-net.invalid> - 2013-11-18 17:00 -0500
            Re: Fixing "typos" in enums... Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-19 15:39 +0000
  Re: Fixing "typos" in enums... Arivald <NOSPAMarivald@interia.pl> - 2013-11-19 00:29 +0100
    Re: Fixing "typos" in enums... lipska the kat <"lipskathekat at yahoo dot co dot uk"> - 2013-11-19 11:14 +0000

csiph-web