有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何设计我的setter方法?

我有一个方法,我这样写:

void updateMyJaxb(final JAXBElement<?> jaxbElement) {

addElementtoJaxb(jaxbElement)
}


void addElementTJaxb(jaxbElement)
{
   //have to cast to myown type 
((JAXBElement<MyType>) jaxbElement).getValue().setSomeValue(somevalue);
}

所以本质上我给JAXBElement增加了一些员工。 问题是:这是一个好的设计,参考和改变的内容? 返回对更新对象的引用是否更好? 否则,该方法可能不容易理解


共 (1) 个答案

  1. # 1 楼答案

    setter不应该对直接获取的参数有任何影响。 就我个人而言,我认为这是一个糟糕的设计。 如果你还想这么做,我强烈建议你记录下这种行为,因为这种行为可能是意想不到的

    也不需要返回对象,因为Java通过引用传递参数(通常是对象)

    我将使用适配器模式,它将JAXBElement作为参数,并返回一个JAXBElement。 适配器没有更新JAXBElement,而是将其克隆并更改克隆并返回。 这样就不会产生意想不到的副作用。 这种模式也被称为防御性复制

    private JAXBElement clone(JAXBElement o) {
        JAXBElement clone = new JAXBElement();
    
        clone.setName(o.getName());
        ...
    
        return clone;
    }
    

    这应该能行