DTO 中的 Java 继承

标签 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 {
 ......
}

但是我不能在子类中拥有与父类(super class)同名的成员,即:myList。姓名不得更改。我想要一个“扩展的”myList,它具有 C 的属性和 Cext 的属性。 A 和 B 是 DTO,所以我想 有时将 B 作为 A 的“丰富”版本返回,而不更改名称、类型等。

最佳答案

泛型来救援。

class A<T extends C> {

protected String a;
protected String b;
.....
protected List<T> myList;
}

现在 myList 具有 T 类型的元素,它扩展了 C

当您使用 Aext 子类化 A 时,您可以指定 Cext 作为 myList 元素的类型。

class Aext extends A<Cext> {

String x;
}

关于DTO 中的 Java 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46623440/

相关文章:

c++ - 如何声明任何继承类的实例?

c# - 如何在C#中继承WPF控件并同时使用泛型类?

android - 使用多个基类时出现链接错误

Java与打印机通信时如何在字符串或txt文件中使用特殊ESC字符?

java - 如果在循环内没有按预期工作java

java - 如果 StringBuilder 无论如何都从 AbstractStringBuilder 继承它,为什么它应该实现 CharSequence 呢?

c++ - 初始化列表没有合适的默认构造函数可用错误

java - 如何将长值转换为字符串集

java - Activity UI修改不起作用?

Java - 摆脱编译器警告?