我很好奇在从可变类返回对象集合时,什么被认为是更好的做法:
public class Someclass {
public List<String> strings;
public add(String in){ strings.add(in); }
public remove(String in) { strings.remove(in); }
//THIS
public List<String> getStrings(){
return Collections.unmodifiableList(strings);
}
//OR THIS
public List<String> getStrings(){
return new ArrayList(strings);
}
}
我一直认为将内部集合包装在一个不可修改的Unmodifiable中是最好的方法,因为我认为没有理由要额外生成一个副本。然而,我意识到在内部对列表进行的任何更改都将暴露给客户端,这让我觉得很糟糕。