4

我的实体包含以下私有ForeignCollection属性:

@ForeignCollectionField
private ForeignCollection<Order> orderCollection;

private List<Order> orderList;

避免调用者使用 a 的最佳方法或通常方法是ForeignCollection什么?有没有什么巧妙的方法可以将Collections数据返回给调用者?

以下方法看起来如何?它允许调用者通过List. 你会推荐这样做吗?

public List<Order> getOrders() {
    if (orderList == null) {
        orderList = new ArrayList<Order>();
        for (Order order : orderCollection) {
            orderList.add(order);
        }
    }
    return orderList;
}
4

1 回答 1

3

如果可以将签名更改为Collection而不是List,您可以尝试使用Collections.unmodifiableCollection()

public Collection<Order> getOrders()
{
    return Collections.unmodifiableCollection(orderCollection);
}

否则,您使用惰性成员变量的方法很好(前提是您不需要同步)。另外,请注意,您可以只使用构造函数ArrayList来复制源集合中的值:

orderList = new ArrayList<Order>(orderCollection);
于 2012-07-20T21:48:18.760 回答