Java 在方法内指定变量
所有对象(p1、p2买方、卖方)都来自同一类,最初买方和卖方对象为空。根据文件类型,我需要将p1和p2分配给卖方或买方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
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的评论中发现,这个
是可以的,所以不需要再更新问题了。为所有的噪音感到抱歉:)