【发布时间】:2021-11-12 22:17:23
【问题描述】:
我正在尝试创建一个enum,它的构造函数接受一个基类是泛型类的对象。
我似乎无法从 enum 中获取底层泛型类型,但返回的是 Object 而不是 T。
有没有办法做到这一点?
abstract public class Field<T> {
abstract public T get();
}
public class IntegerField extends Field<Integer> {
public Integer get() {
return 5;
}
}
public class StringField extends Field<String> {
public String get() {
return "5";
}
}
public enum Fields {
INTEGER (new IntegerField()),
STRING (new StringField());
private final Field<?> field; // <<--- I can't have Field<T>, enum's can't be generic. :(
<T> Fields(Field<T> field) {
this.field = field;
}
public <T> T get() {
return field.get(); // <<--- Returns Object, not T
}
}
【问题讨论】: