Fw: Generics in enums (original) (raw)

Joe Darcy joe.darcy at oracle.com
Thu May 30 06:43:59 UTC 2013


Hello Victor,

On 5/29/2013 11:25 PM, Victor Polischuk wrote:

Greetings,

I beg pardon for the previous HTML mail. Some time ago I wanted to migrate our "commons-lang" enums to "java 5" enumerations, but I encountered an issue that it cannot be done without discarding generics since java enums do not support them. Let me show an example: //------ public final class ColorEnum extends org.apache.commons.lang.enums.Enum { public static final ColorEnum RED = new ColorEnum("Red"); public static final ColorEnum GREEN = new ColorEnum("Green"); public static final ColorEnum�BLUE = new ColorEnum("Blue"); public static final ColorEnum WHITE = new ColorEnum("White") { @Override public MixedPixel make() {...}� }; private ColorEnum(String color) {super(color);} public boolean filter(T pixel) {...} public T make() {...} } //------ And I wonder if there is a specific reason why I cannot convert it into something like:� //------ public enum Color { RED("Red"), GREEN("Green"), BLUE("Blue"), WHITE("White") { @Override public MixedPixel make() {...}� }; private Color(String color) {...} public boolean filter(T pixel) {...} public T make() {...} } //------ Thank you in advance. Sincerely yours, Victor Polischuk

You can approximate this effect by having your enum implement an interface or even a generic interface. For some examples in the JDK see, javax.tools.StandardLocation and java.nio.file.LinkOption.

HTH,

-Joe



More information about the core-libs-dev mailing list