Tom*_*Tom 1 java generics collections inheritance
基本上我需要一个抽象类,它包含一个列表的字段,详细说明它可以保存某个类的子类,然后创建一个存储该特定类的特定子类的具体类.
在代码中更好地解释我肯定:
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>();
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我得到编译器错误
该方法在类型List <capture#3-of中添加(捕获#3-of?extends A)?extends A>不适用于参数(B)
列表实例化的行.
我怎样才能让它发挥作用?
你能打字AbsClass吗?
public abstract class AbsClass<T extends A> {
protected List<T> list;
}
public class ConClass extends AbsClass<B> {
list = new ArrayList<B>();
}
Run Code Online (Sandbox Code Playgroud)
当然,在这一点上,甚至没有必要将实例化移动到子类:
public abstract class AbsClass<T extends A> {
protected List<T> list = new ArrayList<T>();
}
public class ConClass extends AbsClass<B> {
//... other stuff ...
}
Run Code Online (Sandbox Code Playgroud)