[英]Java Generics Inheritance
我有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>();
是的,你在变量声明中缺少type参数,即m
的类型不约束type参数,这就是为什么get()只知道返回扩展BaseDataType的东西。 它应该是:
BaseSQLManager<Property, PropertSQLAdapter> m
= new BaseSQLManager<Property, PropertSQLAdapter>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.