Java泛型继承

时间:2011-04-10 12:05:53

标签: java generics inheritance

我有两种不同类型的数据管理器,一种继承另一种,都依赖于1种基础数据类,如下所示:

public abstract class BaseDataType {
    ...
}

public class BaseManager<DataType extends BaseDataType> implements ListModel{
    ...
    public final DataType get(index i){
        return dataList.get(i);
    }
    ...
}

public class BaseSQLManager<DataType extends BaseDataType, Adapter extends SQLAdapter>
    extends BaseManager<DataType>{
    ...
}

我理解使用BaseSQLManager m =new BaseSQLManager<Property, PropertSQLAdapter>();将允许我使用Property p = m.get(i);但是我被告知get方法返回BaseDataType。

我确定我在这里缺少一些小东西,我无法弄明白。解释为什么这不起作用真的会有所帮助。感谢

1 个答案:

答案 0 :(得分:3)

BaseSQLManager m =new BaseSQLManager<Property, PropertSQLAdapter>();

是的,你在变量声明中缺少type参数,即m的类型不约束type参数,这就是为什么get()只知道返回扩展BaseDataType的东西。它应该是:

BaseSQLManager<Property, PropertSQLAdapter> m 
    = new BaseSQLManager<Property, PropertSQLAdapter>();