java - 在Setter的范围内,Setter只更改字段的值

  显示原文与译文双语对照的内容

我有一个接收邮件的应用程序。 在消息中有可以编辑的字段。 字段更改时,应将它的保存到数据库。 但是,setter只在setter的范围内更改给定字段的值。 为什么会这样? 这是getter和setter代码:


public String getSenderCharges() {
 Tag tag = swiftMessage.getBlock4().getTagByName("71F");
 String value = tag.getValue();
 Field71F field = new Field71F(value); 
 String senderCharges = field.getValue();
 return senderCharges; 
}

public void setSenderCharges(String senderCharges) {
 Tag tag = swiftMessage.getBlock4().getTagByName("71F");
 String value = tag.getValue();
 if(value.equals(senderCharges)){
 tag.setValue(value);
 }else{
 tag.setValue(senderCharges);
 }
}

时间:

你是 creating a new object of Tag in setter method 因此,在 tag.setValu e 这样的方法中更新标记值时,不反映在setter方法之外。

标记是setter方法的本地标记,它没有setter方法之外的作用域。

试试这种方法-


public void setSenderCharges(String senderCharges) {
 String value = swiftMessage.getBlock4().getTagByName("71F").getValue();
 if(!value.equals(senderCharges)){
 swiftMessage.getBlock4().getTagByName("71F").setValue(senderCharges);
 }
}

我注意到的一件事是一个冗余的tag.setValue(value) 。 为什么要设置你刚获得的值? 你的整个集方法等价于 swiftMessage.getBlock4().getTagByName("71F").setValue(senderCharges)

为什么没有从它的他代码中观察到这种变化,并不明显,你已经发布了这些代码。 可能是并发问题?

...