Java Enums values with Generics

enums, generics, java

Solution

JLS does not allow type parameters for an enum:

EnumDeclaration:
    ClassModifiers(opt) enum Identifier Interfaces(opt) EnumBody

EnumBody:
    { EnumConstants(opt) ,(opt) EnumBodyDeclarations(opt) }

Problem

I need something like this: ``` public enum Enum { ENUM1<Class1>(Class1.class, "A DESCRIPTION", new Class1()), ENUM2<Class2>(Class2.class, "A DESCRIPTION", new Class2()), ENUM3<Class3>(Class3.class, "A DESCRIPTION", new Class3()); private Enum(Class<? extends Object> clazz, String description, Object instance) {} } ``` What I need: a single place where I define different instances of all ClassX (they extend the same ClassSuper). Of course I could define different Enums for every ClassX, but this is not really what I want.

Original source