Az Effective Java című könyvben is szerepel, hogy nem ajánlott nullt visszaadni, inkább részesítsük előnyben az üres tömböket és az üres kollekciókat, ha tömb vagy kollekció a visszatérési érték típusa. Lentebb arra látható egy példa, hogy JAXB használatakor hogyan kell annotálni az osztályunkat, hogy az unmarshall után a JAXB ne hagyjon maga után nullokat a kollekciók értékeként.
import java.util.LinkedList; import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) public class Data { @XmlElementWrapper(name = "list") @XmlElement(name = "list-element") private final List<String> list = new LinkedList<String>(); public Data() { } public List<String> getList() { return new LinkedList<String>(list); } public void setList(final List<String> list) { if (list == null) { throw new IllegalArgumentException("list cannot be null"); } this.list.clear(); this.list.addAll(list); } }
Érdemes megjegyezni, hogy ha a getter metódusra kerülne a @XmlElement annotáció, akkor a metódus által visszaadott listába kerülnének a JAXB által felvett elemek, emiatt a getterben nem lehetne másolatot visszaadni a belső listáról.
Hozzászólások
Azert nekem inkab szimpi az,
Azert nekem inkab szimpi az, hogy getterre teszek annotaciokat es nem isok a getter/setterbe semmit.
Eleg atlathatatlan amikor mindenfelet csinalnak a getter/setter metodusok.