【发布时间】:2011-03-29 20:11:11
【问题描述】:
基本上我需要一个抽象类,它包含一个列表字段,详细说明它可以保存某个类的子类,然后创建一个具体类来存储该特定类的特定子类。
我确信在代码中得到更好的解释:
public class A {
}
public class B extends A {
}
public abstract class AbsClass {
protected List<? extends A> list;
}
public class ConClass extends AbsClass {
list = new ArrayList<B>();
}
使用上面的代码我得到编译器错误
List 不适用于参数 (B)
列表被实例化的那一行。
我怎样才能让它工作?
【问题讨论】:
-
关于你的编译错误:你遗漏了细节。此错误与尝试调用方法
list.add有关,与您的分配无关。您的代码由于其他原因无法编译;即赋值发生在构造函数或初始化块之外。 -
对我来说很好......应该......
-
@mlaw 不,它没有。 没有声明!我们只能猜测它是在哪里声明的。
-
@glow:
A是一个类,而不是类型参数。有点误导,因为它是一个字符,但它是一个常见的假类名,并且包含在问题中。
标签: java generics inheritance collections