我有一个我写的方法:
void updateMyJaxb(final JAXBElement<?> jaxbElement) {
addElementtoJaxb(jaxbElement)
}
void addElementTJaxb(jaxbElement)
{
//have to cast to myown type
((JAXBElement<MyType>) jaxbElement).getValue().setSomeValue(somevalue);
}
所以实质上我在JAXBElement中添加了一些人员。 问题是:它是一个好的设计,参考和改变内容,? 将引用返回到更新的对象会更好吗? 否则该方法可能不易理解?
答案 0 :(得分:0)
Setter不应对他们直接参数产生任何影响。 我个人认为这是糟糕的设计。 如果您希望这样做,我强烈建议您记录此行为,因为行为可能是意外的。
返回对象也不是必需的,因为Java通过引用传递参数(通常是对象)。
我会使用Adapter模式,它将JAXBElement作为参数并返回JAXBElement。 适配器克隆它并更改克隆并返回它,而不是更新JAXBElement。 这样就没有引入意想不到的副作用。 这种模式也称为防御性复制。
private JAXBElement clone(JAXBElement o) {
JAXBElement clone = new JAXBElement();
clone.setName(o.getName());
...
return clone;
}
这应该可以胜任。