我有一个具有这些属性的A类:
class A {
String a;
String b;
.....
List<C> myList;
}
我想要一个Aext类,它将扩展A并且还将“扩展”myList属性,意思是:
class Aext extends A {
String x;
.....
List<Cext> myList;
....
}
其中:
class Cext extends C {
......
}
但我不能在子类中有一个与超类同名的成员,即:myList。名称不得更改。我想要一个“扩展”myList,它具有C的属性加上Cext的属性。 A和B是DTO,所以我想 有时将B作为A的“丰富”版本返回,而不更改名称,类型等。
答案 0 :(得分:1)
你有仿制药。使用它们。
class A<T extends C> {
String a;
String b;
.....
List<T> myList;
}
class Aext extends A<Cext> {
}
答案 1 :(得分:1)
救援的泛型。
class A<T extends C> {
protected String a;
protected String b;
.....
protected List<T> myList;
}
现在myList
包含T
类型的元素,其扩展为C
。
当您使用A
继承Aext
时,您可以指定Cext
作为myList
的元素类型。
class Aext extends A<Cext> {
String x;
}
答案 2 :(得分:0)
对于DTO,不鼓励继承,特别是如果您要从继承层次结构中的不同阶段实例化对象。
原因是equals()
和hashcode()
之间的关系
how do I correctly override equals for inheritance in java?