Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 填充类似结构的不同对象的常用方法_Java_Refactoring - Fatal编程技术网

Java 填充类似结构的不同对象的常用方法

Java 填充类似结构的不同对象的常用方法,java,refactoring,Java,Refactoring,我有两个对象CreateDocumentHeader和RetrieveDocumentHeader,它们的结构非常相似。我正在读取每个对象并填充DTO。我不想为每个对象创建不同的方法。如何编写一个方法来填充它们。这是两门课 public class CreateDocumentHeaderType { protected CreateAdminRecordType administrativeRecord; protected CreateControlRecordType co

我有两个对象CreateDocumentHeader和RetrieveDocumentHeader,它们的结构非常相似。我正在读取每个对象并填充DTO。我不想为每个对象创建不同的方法。如何编写一个方法来填充它们。这是两门课

public class CreateDocumentHeaderType {
    protected CreateAdminRecordType administrativeRecord;
    protected CreateControlRecordType controlRecord;
    public CreateAdminRecordType getAdministrativeRecord() {
        return administrativeRecord;
    }
    public void setAdministrativeRecord(CreateAdminRecordType value) {
        this.administrativeRecord = value;
    }
    public CreateControlRecordType getControlRecord() {
        return controlRecord;
    }
    public void setControlRecord(CreateControlRecordType value) {
        this.controlRecord = value;
    }
}

public class RetrieveDocumentHeaderType {
    protected RetrieveAdminRecordType administrativeRecord;
    protected RetrieveControlRecordType controlRecord;
    public RetrieveAdminRecordType getAdministrativeRecord() {
        return administrativeRecord;
    }
    public void setAdministrativeRecord(RetrieveAdminRecordType value) {
        this.administrativeRecord = value;
    }
    public RetrieveControlRecordType getControlRecord() {
        return controlRecord;
    }
    public void setControlRecord(RetrieveControlRecordType value) {
        this.controlRecord = value;
    }
}

这两个版本的AdministrationRecord和ControlRecord也有类似的结构。

我想我遗漏了一些东西。你考虑过抽象父类吗?

< p>我将创建一个接口来描述这两个类所尊重的契约。< /P>
public interface DocumentHeaderType {
    public AdminRecordType getAdminRecord() ;

    public ControlRecordType getControlRecord() ;
}
下一步是通过抽象类提供基本实现

public abstract class AbstractDocumentHeaderType implements DocumentHeaderType {
    private AdminRecordType adminRecord ;
    private ControlRecordType controlRecord ;

    public AdminRecordType getAdminRecord() {
        return adminRecord ;
    }
    public ControlRecordType getControlRecord() {
        return controlRecord ;
    }
    // setters ...
}
public class CreateDocumentHeaderType extends AbstractDocumentHeaderType {
    // we inherit the getters and setters, we are pretty much set
}
现在您只需要创建DocumentRecordHeaderType和RetrieveDocumentRecordHeaderType来扩展抽象类

public abstract class AbstractDocumentHeaderType implements DocumentHeaderType {
    private AdminRecordType adminRecord ;
    private ControlRecordType controlRecord ;

    public AdminRecordType getAdminRecord() {
        return adminRecord ;
    }
    public ControlRecordType getControlRecord() {
        return controlRecord ;
    }
    // setters ...
}
public class CreateDocumentHeaderType extends AbstractDocumentHeaderType {
    // we inherit the getters and setters, we are pretty much set
}
现在,我们来看一下填充值的方法

public void populateDocumentRequest(AbstractDocumentHeaderType holder) {
    holder.setAdminRecord(...);
    holder.setControlRecord(...) ;
}

希望这能有所帮助。

感谢您的回复,我真的很抱歉,我没有提到一点。CreateDocumentHeaderType和RetrieveDocumentHeaderType等都是JAXB生成的文件,因此我想我无法更改它们以实现或扩展任何接口或类。我真的为这次错过感到抱歉。