Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 - Fatal编程技术网

Java 在方法内指定变量

Java 在方法内指定变量,java,Java,所有对象(p1、p2买方、卖方)都来自同一类,最初买方和卖方对象为空。根据文件类型,我需要将p1和p2分配给卖方或买方 Class EmailSenderUtil{ public void sendPendingActionEmail(Document Type, PartyType p1, PartyType p2){ PartyType buyer = null; PartyType seller = null; /// some other computations el

所有对象(p1、p2买方、卖方)都来自同一类,最初买方和卖方对象为空。根据文件类型,我需要将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;
    }
}
我可以在两行中分配这些变量,但与else if条件一样,如果条件很多(10),为了减少冗余,我将这个分配移到了一个方法中。但由于Java是按值传递的,赋值不会反映到父方法


如果我能知道是否有任何优雅的方法来执行此操作,而不是多次复制同一作业,我将不胜感激。

如果这些方法已经出现在
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;
}

如果这些方法已存在于
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;
}

在问题中提供的编辑之后,我认为我们现在可以使用这种方法,从方法中删除买方和卖方,并使用这个。买方=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;
}

在问题中提供的编辑之后,我认为我们现在可以使用这种方法,从方法中删除买方和卖方,并使用这个。买方=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;
}


不要把买方和卖方当作论据。在您的方法中使用
this.buyer
this.seller
。这些方法在哪里?指定实例变量(
this.buyer
)而不是本地变量不是一个选项?Java按值传递。没有办法直接通过引用传递。您需要将变量包装到一个类中,传递该类并在包装器中设置值。您想在类中添加方法的四个对象类变量中是否有一个?我已经更新了问题。所有方法都是在一个util类中定义的。谢谢你的回答,我能用这个。方法也一样。不要把买方和卖方当作论据。在您的方法中使用
this.buyer
this.seller
。这些方法在哪里?指定实例变量(
this.buyer
)而不是本地变量不是一个选项?Java按值传递。没有办法直接通过引用传递。您需要将变量包装到一个类中,传递该类并在包装器中设置值。您想在类中添加方法的四个对象类变量中是否有一个?我已经更新了问题。所有方法都是在一个util类中定义的。谢谢你的回答,我能用这个。在第二种方法中,我认为p1,p2,买方和卖方是PartyType类型的对象。他们不是Partytype类的成员,所以我们如何编写Partytype.p1,Partytype.seller。谢谢!!所以现在我假设像
partyTypeObjects
这样的类包含p1、p2、buyer、seller,我们可以使用这个对象来完成这项工作,因为根据问题:所有对象(p1、p2 buyer、seller)都来自同一个类,最初的buyer和seller对象都是空的。另外,根据问题中代码的当前更改,第一种方法也会受到影响,因为它只包含买方和卖方作为实例成员。在第二种方法中,我认为p1、p2、买方和卖方是PartyType类型的对象。他们不是Partytype类的成员,所以我们如何编写Partytype.p1,Partytype.seller。谢谢!!所以现在我假设像
partyTypeObjects
这样的类包含p1、p2、buyer、seller,我们可以使用这个对象来完成这项工作,因为根据问题:所有对象(p1、p2 buyer、seller)都来自同一个类,最初的buyer和seller对象都是空的。另外,根据问题中代码的当前更改,第一种方法也会受到影响,因为它只包含买家和卖家作为实例成员。编辑代码。我认为这两个是实例变量,就像我编辑的回答一样。。我看到了。。这就是我更改代码的原因。。我的代码只有在两个变量都是实例变量时才有效,就像在我的代码中一样。在这个问题中,方法不是静态的,但如果是静态的,我可以想到另一种方法,在这种方法中,我们可以使函数返回买方和卖方(两者都是,像对象或列表一样),调用函数时,可以在else if块中接收它们。我也会在一段时间内更新代码。我现在在OP的评论中发现,
这个
是可以的,所以不需要再更新问题了。抱歉,所有的噪音:)编辑代码。我认为这两个是实例变量,就像我编辑的回答一样。。我看到了。。这就是我更改代码的原因。。我的代码只有在两个变量都是实例变量时才有效,就像在我的代码中一样。在这个问题中,方法不是静态的,但如果是静态的,我可以想到另一种方法,在这种方法中,我们可以使函数返回买方和卖方(两者都是,像对象或列表一样),调用函数时,可以在else if块中接收它们。我也会在一段时间内更新代码。我现在在OP的评论中发现,
这个
是可以的,所以不需要再更新问题了。为所有的噪音感到抱歉:)