我有一个在列表中存储一些数据的对象。该实现可能会在以后更改,并且我不想向最终用户公开内部实现。但是,用户必须具有修改和访问此数据集合的能力。目前我有这样的事情:
public List<SomeDataType> getData() {
return this.data;
}
public void setData(List<SomeDataType> data) {
this.data = data;
}
这是否意味着我已允许内部实现细节泄漏出去?我应该这样做吗?
public Collection<SomeDataType> getData() {
return this.data;
}
public void setData(Collection<SomeDataType> data) {
this.data = new ArrayList<SomeDataType>(data);
}
最佳答案
这仅取决于您是否希望您的用户能够索引数据?如果是,请使用列表。两者都是接口(interface),因此您不会泄漏实现细节,实际上,您只需要确定所需的最低功能即可。