Fw: Generics in enums (original) (raw)
Victor Polischuk victor2 at ukr.net
Thu May 30 07:06:53 UTC 2013
- Previous message: Fw: Generics in enums
- Next message: Fw: Generics in enums
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Good day Joe,
Thank you for your prompt reply. If I understood you correctly, it is not the solution which can help me distinguish enum elements by type parameters. I would like to have restrictions on types which can be passed to a enum instance methods and reduce numbers of casts or "instanceof" checks for return values. In case of implementation of an interface I need to write something like: //---- public enum Color implements ColorAspect {...} //---- which is redundant since I can hardcode Pixel type everywhere within the enumeration but the initial intention is to specify type parameters for each enum value independently.
Sincerely yours, Victor Polischuk --- Original message --- From: "Joe Darcy" <joe.darcy at oracle.com> Date: 30 May 2013, 09:44:57
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
- Previous message: Fw: Generics in enums
- Next message: Fw: Generics in enums
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]