我的实体包含以下私有(private) ForeignCollection
属性:
@ForeignCollectionField
private ForeignCollection<Order> orderCollection;
private List<Order> orderList;
避免调用者使用
ForeignCollection
的最佳方法或常用方法是什么?有没有什么巧妙的方法可以将 Collections
数据返回给调用者?下面的方法看起来如何?它允许调用者通过
List
访问数据。你会建议这样做吗?public List<Order> getOrders() {
if (orderList == null) {
orderList = new ArrayList<Order>();
for (Order order : orderCollection) {
orderList.add(order);
}
}
return orderList;
}
最佳答案
如果可以将签名更改为 Collection
而不是 List
,您可以尝试使用 Collections.unmodifiableCollection() 。
public Collection<Order> getOrders()
{
return Collections.unmodifiableCollection(orderCollection);
}
否则,您使用惰性成员变量的方法很好(前提是您不需要同步)。另外,请注意,您可以只使用
ArrayList
的构造函数来复制源集合中的值:orderList = new ArrayList<Order>(orderCollection);