我有以下实现
public class PartGroup {
private Part iPart;
private ArrayList<Part> iParttList;
public Part getPart() {
return iPart;
}
public void setPart( Part aPart ) {
iPart = aPart;
}
public ArrayList<Part> getParttList() {
return iParttList;
}
public void setParttList( ArrayList<Part> aParttList ) {
iParttList = aParttList;
}
}
是否可以设置iParttList和iPart的设置器?我认为只有消费者可以使用getter来获取集合的创建实例并清除或添加元素到集合中我应该删除setter并添加以下实现
public ArrayList<Part> getParttList() {
if(iParttList == null)
iParttList = new ArrayList<Part>();
return iParttList;
}
public Part getPart() {
if(iPart == null)
iPart = new Part();
return iPart;
}
什么是最佳做法?
第二个实现防止返回null,对吗?因此,如果有可能这个对象可以返回null(因为那些构造函数允许这样或者它可能会通过)并且这对于您的预期用例来说是一件坏事,那么使用第二个实现。
您的原始实现似乎是getter和setter的标准实现。为什么你认为你需要将它重新排列到第二个代码块?
正如我们所看到的,在创建PartGroup实例后,您没有构造来创建列表。
我认为:
从我的观点来看,第二种实现似乎更好。它确保在任何情况下列表都不为空。它还有助于减少检查列表是否为空的重复代码。最后,调用public void setParttList( ArrayList<Part> aParttList )
可能会有风险,因为它可能会设置一个新的列表,即使已经存在一个。