我有2种不同类型的数据管理器,一种继承另一种,并且都依赖于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。

我确定我在这里遗漏了一些小东西,无法弄清楚。解释为什么这行不通确实有帮助。谢谢

最佳答案

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

是的,您在变量声明中缺少类型参数,即m的类型不限制类型参数,这就是为什么只知道get()返回扩展BaseDataType的内容的原因。它应该是:
BaseSQLManager<Property, PropertSQLAdapter> m
    = new BaseSQLManager<Property, PropertSQLAdapter>();

10-07 21:39