继承泛型类保持泛型并检索父

时间:2015-11-12 12:36:06

标签: java generics

我有一个抽象的类,它是泛型的,并试图通过泛型来扩展它 但似乎不可能再获得泛型类型了。

根类

public abstract class AbstractDataModel<T extends AbstractEntity> extends DataModel<T> {

    private final Class<T> rootType;

    protected AbstractDataModel() {
        Type genericSuperclass = getClass().getGenericSuperclass();
        ParameterizedType parameterizedType = (ParameterizedType)genericSuperclass;
        Type type = parameterizedType.getActualTypeArguments()[0];
        rootType = (Class<T>)type;
    }

专业化

public class OwnerDataModel<T extends AbstractEntity> extends AbstractDataModel<T> {

类型投射到Class<T>时出现异常。我得到了

  

无法施放&#39; sun.reflect.generics.reflectiveObjects.TypeVariableImpl&#39;   to&#39; java.lang.Class&#39;

通常我直接使用 AbstractDataModel

dataModel = new AbstractDataModel<Entity>() {

我想使用我的 OwnerDataModel ,如下所示

dataModel = new OwnerDataModel<Entity>();

我错过了什么?

1 个答案:

答案 0 :(得分:0)

首先,你不必写这个:

public class OwnerDataModel<T extends AbstractEntity> extends AbstractDataModel<T> { ...

但是:public class OwnerDataModel extends AbstractDataModel<T> { ...

因为,AbstractDataModel<T>默认包含在第一个中。

其次, 您无法实例化AbstractDataModel,但可以实例化OwnerDataModel