Java枚举方法返回构造函数中提供的泛型类型?

Java枚举方法返回构造函数中提供的泛型类型?,java,generics,enums,Java,Generics,Enums,我想要枚举方法getValue()的通用返回类型。返回的类型应与枚举构造函数中提供的类型相同 public enum ParameterType { NUMBER(int.class), TEXT(String.class); private Class<?> classType; ParameterType(Class<?> _clazz) { classType = _clazz; } pu

我想要枚举方法
getValue()
的通用返回类型。返回的类型应与枚举构造函数中提供的类型相同

public enum ParameterType
{
    NUMBER(int.class),
    TEXT(String.class);

    private Class<?> classType;

    ParameterType(Class<?> _clazz)
    {
        classType = _clazz;
    }

    public <T> T getValue()
    {
        String a = "i am a text";
        int b = 42;

        return classType.cast(a);
        //return classType.cast(b);
    }
}
公共枚举参数类型
{
编号(国际等级),
文本(String.class);
私有类类型;
参数类型(类_clazz)
{
类类型=_clazz;
}
公共T getValue()
{
String a=“我是一个文本”;
int b=42;
返回classType.cast(a);
//返回classType.cast(b);
}
}
但是,在这种情况下,错误是“无法从捕获#3?转换为T”。此外,不可能在枚举本身上提供泛型“X”类型,该类型可用于类的返回类型


我怎样才能解决这个问题呢?

别忘了铸造。请为每个枚举常量重新定义“getValue()”。

不能对枚举执行此操作,因为枚举中的所有值都具有相同的类型

为此,您基本上必须手动构建“枚举”:

公共最终类参数类型
{
公共静态最终参数类型编号=新参数类型(42);
公共静态最终参数类型TEXT=新参数类型(“我是文本”);
私有参数类型(T值){
这个值=值;
}
公共T getValue(){return value;}
}

重要的一点是使构造函数私有,因此不能在类之外调用它。这使它有点像枚举,因为您定义的实例是唯一的实例。

字符串a,int b的
在实际代码中来自何处?您试图做的不会起作用。最好的方法是让
getValue()
方法返回类型
看起来像一个重复:?在实际代码中,
a
b
来自参数注入依赖项(在创建枚举本身之后),并根据枚举的类型(数字与文本),返回相应的一个。
public final class ParameterType<T>
{
  public static final ParameterType<Integer> NUMBER = new ParameterType<>(42);
  public static final ParameterType<String> TEXT = new ParameterType<>("I am a text");

  private ParameterType(T value) {
    this.value = value;
  }

  public T getValue() { return value; }
}