0

我有一个接收消息的应用程序。在消息中有可以编辑的字段。更改字段时,应将其保存到数据库中。不幸的是,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);
    }
}
4

2 回答 2

1

当您creating a new object of Tag in setter method在诸如 e 之类的方法中更新 Tag 值时,您tag.setValu不会反映在 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);
    }
}
于 2012-07-10T10:33:10.327 回答
0

我注意到的一件事是多余的tag.setValue(value). 为什么要设置你刚刚从中得到的值?您的整个 set-method 等效于swiftMessage.getBlock4().getTagByName("71F").setValue(senderCharges).

为什么您没有从其他代码中观察到这种变化,这在您迄今为止发布的代码中并不明显。也许是并发问题?

于 2012-07-10T10:39:54.397 回答