首页 > 解决方案 > 设计更改为调用 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 : ]]

标签: java

解决方案


推荐阅读