在方法内分配变量

时间:2019-03-27 08:02:16

标签: java

所有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通过值传递,因此分配不会反映到父方法。

如果我知道有什么绝妙的方法可以执行此操作,而不是多次复制同一作业,那将是非常有必要的。

2 个答案:

答案 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;
}