如果我有一个A类,其中包含A类孩子的列表,例如
public Class A
{
protected List<A> children = new ArrayList<A>();
...
}
那么,子类B中是否可以拥有自己的另一个子类C的子代,并创建对A类子代列表的引用?类A具有其他类要使用的方法,例如送他们的孩子去。但是,A类是通用类,B和C是更具体的类。因此,为了使代码的读取更加容易并避免大量的类型转换,我希望超类的列表引用子类的列表。
因此,当我更新 otherChildren 时,子列表也将更新。我想在下面的示例中执行类似的操作,但这不起作用,并且无法强制转换(children =(List )otherChildren)。
但是总有办法实现吗?我真的很想避免否则会得到的所有类型转换。
public Class B extends A
{
private List<C> otherChildren = new ArrayList<C>();
public B()
{
children = otherChildren;
...
// Modification of otherChildren will result in the same
// modification in children
}
}
public Class C extends A
{
...
}
最佳答案
您要做的就是将A类中孩子的声明更改为:
protected List<? extends A> children = new ArrayList<A>();