我有一个抽象的类,它是泛型的,并试图通过泛型来扩展它 但似乎不可能再获得泛型类型了。
根类
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>();
我错过了什么?
答案 0 :(得分:0)
首先,你不必写这个:
public class OwnerDataModel<T extends AbstractEntity> extends AbstractDataModel<T> { ...
但是:public class OwnerDataModel extends AbstractDataModel<T> { ...
因为,AbstractDataModel<T>
默认包含在第一个中。
其次,
您无法实例化AbstractDataModel
,但可以实例化OwnerDataModel
。