Amm*_*kun 1 java inheritance composition
我有一个超级类的东西
class SuperClass {
private String name;
private List<SuperClass> subList;
//getter setters
}
Run Code Online (Sandbox Code Playgroud)
我想扩展这个SuperClass以获得更多的字段,比如
class SubClass extends SuperClass {
private String email;
//getter setter
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,因为SuperClass包含对SuperClass类型的对象列表的引用,我将如何确保任何SubClass对象保存对SubClass类型的对象列表的引用...它甚至可能吗?我在这里做了什么非常错的事吗?
编辑 我可以做类似的事情
class SuperClass {
private String name;
private List<? extends SuperClass> subList;
public SuperClass(List<? extends SuperClass> subList) {
this.subList = subList;
}
}
Run Code Online (Sandbox Code Playgroud)
而现在SubClass只需要调用超类的构造函数
class SubClass extends SuperClass{
private String email;
private SubClass(List<? extends SuperClass> subList) {
super(subList);
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在,如果我想在列表中添加一些内容,我将无法做到,因为PECS(生产者 - 扩展,消费者 - 超级)泛型的原则不允许我这样做..所以无论何时,我都必须将对象添加到subList我将不得不创建一个新列表,然后在SubClass中设置列表
是否有可能引入第三类?这些方面的东西:
class AbstractClass<T> {
protected List<T> subList;
// getter setters
}
class SuperClass extends AbstractClass<SuperClass> {
private String name;
// getter setters
}
class SubClass extends AbstractClass<SubClass> {
private String email;
// getter setter
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |