我的实体包含以下私有(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);

10-08 18:32