DTO中的Java继承

时间:2017-10-07 18:06:15

标签: java inheritance

我有一个具有这些属性的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的“丰富”版本返回,而不更改名称,类型等。

3 个答案:

答案 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?