For the list property, the getter should return a copy of the list, e.g. with ArrayList's clone() method or copy constructor. Additionally, if the list's elements are immutable, you'll want to copy them, if possible. For example, if you have a list of java.util.Date, then even with a clone of the list, both lists will be pointing to the same Date objects, so if you call Date.setTime, both lists will see it, so you'd need to copy each date element, a la public List getDates() {
List result = new ArrayList();
for (Iterator iter = originalList.iterator(); iter.hasNext();) {
Date originalDate = (Date)iter.next();
Date newDate = new Date(originalDate.getTime()); // or something--check Date's docs
result.add(newDate);
}
}