Enhanced Enums -- use cases

Ali Ebrahimi ali.ebrahimi1781 at gmail.com
Wed Apr 12 06:42:51 UTC 2017

Is not better we have an 'all-features' branch to play with all features
with one build?

On Tue, Apr 11, 2017 at 11:41 PM, Brian Goetz <brian.goetz at oracle.com>

> As you may have noticed, we pushed an implementation of Enhanced Enums
> some time ago.  We're hoping to get user feedback on the feature as it is
> now implemented.
> To get things started, here are some typical use cases where generic enums
> might be useful.  Please contribute others, as well as places in the JDK
> where code could be refactored using this feature.
> An obvious example is com.sun.tools.javac.code.Dynamic (
> http://hg.openjdk.java.net/valhalla/valhalla/langtools/file
> /85cc92a65da8/src/jdk.compiler/share/classes/com/sun/tools/
> javac/code/Dynamic.java#l51), where we have an enum that represents the
> kinds of types representable in the constant pool.
> In that case, these factory methods:
> http://hg.openjdk.java.net/valhalla/valhalla/langtools/file/
> 85cc92a65da8/src/jdk.compiler/share/classes/com/sun/tools/
> javac/code/Dynamic.java#l137
> should be collapsible to a single generic method:
>     <D> static BootstrapArgument<D> constant(Kind<D> kind, D data).
> Another example is command line parsing; for command line arguments, we
> can represent them as enums whose type represents the type of an (optional)
> parameter:
>     enum Args {
>         QUIET<??>("quiet", "q"),
>         FILE<String>("file", "f"),
>         COUNT<Integer>("count", "c"), ....
>     }
> (though its not obvious what the type arg of QUIET should be.)
> If anyone wants to experiment and offer their experience in applying (or
> misapplying) this feature, either to the JDK or their own codebase, that
> would be appreciated....


Best Regards,
Ali Ebrahimi

More information about the amber-dev mailing list