java - 设计更改为调用 2 个 DTO 类的构造函数
问题描述
我有几个 DTO 课程如下 -
class A{
private Long id;
private Long headerId;
}
class B{
private Long id;
private Long headerId;
}
扩展上述类之一的另一个 DTO 类
class comparisonDTO extends B{
private Long id;
public comparisonDTO(A ADTO, B BDTO) {
super(BDTO);
//some op;
}
comparisonDTO
构造函数在我的main
类中被如下调用-
BufferedList comparisonList = new BufferedList();
comparisonDTO compDTO = new comparisonDTO(ADTO, null);
comparisonList.add(compDTO);
输出- :comparisonDTO[id = 1212, B=[id= ,headerId = ]]
我想在我的列表中添加如下内容 -
comparisonDTO[id: 1212, B:[id: ,headerId : ]]
comparisonDTO[id: 1213, A:[id: ,headerId : ]]
为此,我想必须做一些事情,比如有条件地调用 DTO。但我不能这样做,因为我的 compareDTO 类正在扩展 B 类。 super() 总是会调用 B 类构造函数。
super(BDTO != null ? super(BDTO): super(ADTO);
我尝试的另一件事是将 A 类和 B 类的引用放在 compareDTO 类中。
Class comparisonDTO{
private Long id;
private A AOBJ;
private B BOBJ;
public comparisonDTO(A ADTO, B BDTO) {
populateData(BDTO);
//super(BDTO);
//some op;
}
pubic void populateData(BDTO){
BOBJ = new B();
if(BDTO != null) {
BOBJ.setId(BDTO.getId());
BOBJ.setHeaderId(BDTO.getHeaderId());
}
}
在这种情况下,我将 compareList 设为 (address reference of class) ;
comparisonDTO[id = 1212, com....comparisonDTO@42583fe6]
我的设计应该是什么来实现以下目标?
comparisonDTO[id: 1212, B:[id: ,headerId : ]]
comparisonDTO[id: 1213, A:[id: ,headerId : ]]
解决方案
推荐阅读
- c# - 调用 VisualTreeHelper.GetChild() 时出现 ArgumentOutOfRangeException
- c++ - Wxwidgets || 添加类和方法
- amazon-web-services - 将当前 Redshift 模式导入 Redshift QA 环境
- javascript - 儿童道具事件不保持父母的当前状态
- python - 在选定索引处插入字符串的程序
- sql - 同时计算两列中的值?SQL/SQLITE
- javascript - 带有 mapbox 的传单 - 设置默认语言
- azure - Azure DevOps Pipeline 中的 Terraform 获取订阅超时
- macos - Quasar Electron 构建无法在具有 arm64 架构的 M1 mac mini 上运行
- powershell - 开始睡眠意外行为