4

私のエンティティには、次のプライベート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;
}
4

1 に答える 1

3

署名をCollectionではなくに変更しても問題がない場合は、 Collections.unmodizableCollection()Listを使用してみてください。

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

それ以外の場合は、遅延メンバー変数を使用するアプローチで問題ありません(同期が必要ない場合)。また、のコンストラクターを使用してArrayList、ソースコレクションから値をコピーできることに注意してください。

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