所有objetc(p1,p2买方,卖方)都来自同一类,最初的买方和卖方对象为null。根据文档的类型,我需要将p1和p2分配给卖方或买方。
Class EmailSenderUtil{
public void sendPendingActionEmail(Document Type, PartyType p1, PartyType p2){
PartyType buyer = null;
PartyType seller = null;
/// some other computations
else if(documentType.equals(DocumentType.REQUESTFORQUOTATION)) {
assignInitiatorAsBuyer(p1, p2, buyer, seller);
// set some other variable unique to this type
}
}
private void assignInitiatorAsBuyer(PartyType p1, PartyType p2, PartyType buyer, PartyType seller) {
buyer = p1;
seller = p2;
}
private void assignInitiatorAsSeller(PartyType p1, PartyType p2, PartyType buyer, PartyType seller) {
buyer = p2;
seller = p1;
}
}
我可以在两行中分配这些变量,但是如果条件很多(10)则可以减少分配,因此我将这种分配移到了方法内部。但是,由于Java通过值传递,因此分配不会反映到父方法。
如果我知道有什么绝妙的方法可以执行此操作,而不是多次复制同一作业,那将是非常有必要的。
答案 0 :(得分:2)
在问题中提供了修改之后,我认为我们现在可以采用可以从方法中删除买方和卖方的方法,并使用this.buyer = p1
Class EmailSenderUtil{
PartyType buyer = null;
PartyType seller = null;
public void sendPendingActionEmail(Document Type, PartyType p1, PartyType p2){
// .....
// rest of the code
else if(documentType.equals(DocumentType.REQUESTFORQUOTATION)) {
assignInitiatorAsBuyer(p1, p2, buyer, seller);
}
}
private void assignInitiatorAsBuyer(PartyType p1, PartyType p2) {
this.buyer = p1;
this.seller = p2;
}
private void assignInitiatorAsSeller(PartyType p1, PartyType p2) {
this.buyer = p2;
this.seller = p1;
}
答案 1 :(得分:0)
如果方法PartyType
中已经存在,请使用以下方法:
else if(documentType.equals(DocumentType.REQUESTFORQUOTATION)) {
assignInitiatorAsBuyer();
// set some other variable unique to this type
}
private void assignInitiatorAsBuyer() {
this.buyer = this.p1;
this.seller = this.p2;
}
private void assignInitiatorAsSeller() {
this.buyer = this.p2;
this.seller = this.p1;
}
或者如果在其他类中使用它,则如下所示:
else if(documentType.equals(DocumentType.REQUESTFORQUOTATION)) {
assignInitiatorAsBuyer(partyTypeObj);
// set some other variable unique to this type
}
private void assignInitiatorAsBuyer(PartyTypeObjects partyTypeObj) {
partyTypeObj.buyer = partyTypeObj.p1;
partyTypeObj.seller = partyTypeObj.p2;
}
private void assignInitiatorAsSeller(PartyTypeObjects partyTypeObj) {
partyTypeObj.buyer = partyTypeObj.p2;
partyTypeObj.seller = partyTypeObj.p1;
}