我有两个对象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;
}
}
两个版本的AdminstrativeRecord和ControlRecord也有类似的结构。
答案 0 :(得分:0)
我想我错过了一些东西。你考虑过抽象的父类吗?
答案 1 :(得分:0)
我将创建一个界面来描述两个类都尊重的合同。
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 ...
}
现在您只需要使用CreateDocumentRecordHeaderType和RetrieveDocumentRecordHeaderType来扩展抽象类。
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(...) ;
}
希望这有帮助。