Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java使用泛型枚举值_Java_Generics_Enums - Fatal编程技术网

Java使用泛型枚举值

Java使用泛型枚举值,java,generics,enums,Java,Generics,Enums,我需要这样的东西: 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()); privat

我需要这样的东西:

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) {}
}
公共枚举枚举{
ENUM1(Class1.class,“描述”,新的Class1()),
ENUM2(Class2.class,“描述”,新的Class2()),
ENUM3(Class3.class,“描述”,新的Class3());

私有枚举(ClassEnum)实际上可以有字段,看起来这就是您想要的:

private Object instance;
private Enum(Class<? extends Object> clazz, String description, Object instance) {
    this.instance=instance;
}
public Object getInstance() {
    return instance;
}
私有对象实例;

私有枚举(类JLS不允许枚举的类型参数:

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

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

您可以编写以下内容来保存所有相同的信息(因为类可以从类中获得)


您将发现的问题是,对于枚举,泛型没有那么有用,没有泛型,您可以编写大致相同的行为。

枚举不能像dcernahoschi指出的那样以这种方式进行参数化。如果您可以扩展您的问题,以包括您希望通过调用此枚举的类实现的功能,这将非常有用。
public enum Enum {
    ENUM1("A DESCRIPTION", new Class1()),
    ENUM2("A DESCRIPTION", new Class2()),
    ENUM3("A DESCRIPTION", new Class3());

    private Enum(String description, Object instance) {}
}