我有一个超级类
class SuperClass {
private String name;
private List<SuperClass> subList;
//getter setters
}
我想扩展这个 SuperClass 以拥有更多的字段,例如
class SubClass extends SuperClass {
private String email;
//getter setter
}
现在,我的问题是,由于SuperClass包含对 SuperClass 类型的对象列表的引用,我将如何确保任何SubClass对象都包含对 SubClass 类型的对象列表的引用......甚至可能吗?我在这里做错了什么吗?
编辑 我可以做类似的事情吗
class SuperClass {
private String name;
private List<? extends SuperClass> subList;
public SuperClass(List<? extends SuperClass> subList) {
this.subList = subList;
}
}
而现在 SubClass 只需要调用超类的构造函数
class SubClass extends SuperClass{
private String email;
private SubClass(List<? extends SuperClass> subList) {
super(subList);
}
}
但是现在如果我想在列表中添加一些东西,我将无法添加,因为泛型的 PECS(生产者扩展,消费者超级)原则不允许我这样做。所以无论何时,我都必须将对象添加到 subList 我将不得不创建一个新列表,然后在 SubClass 中设置该列表