1

コレクションを持つクラスがあります:

public class Foo
{
    @Inject
    private BarManager barManager;
    @Getter(lazy = true)
    private final List<Bar> bars = barManager.getAll();

    public void addBar(Bar bar)
    {
        bars.add(bar);
    }
}

ただし、に要素を追加/削除することはできませんList。原因は、属性がAtomicReference. 警告/エラーは次のとおりです。

The method add(Employee) is undefined for the type  AtomicReference<AtomicReference<List<Employee>>>

コレクションに対して追加/削除操作を実行するにはどうすればよいですか?

4

2 に答える 2

3

あなたのソリューションは確かに奇妙で、いくつかの実装の詳細に依存しています。さらに、フィールドがまだ初期化されていない場合、NPE で壊れます。適切な解決策は常に機能します。

getBars().add(bar);
于 2012-08-28T17:06:19.547 に答える
1

免責事項:この回答と特にコメントは、情報提供を目的としてここに掲載されています。これの代わりに、上記の受け入れられた回答を使用してください。


一人でこんなに早く解決するとは思わなかった。解決策はかなり奇妙です:

public class Foo
{
    @Inject
    private BarManager barManager;
    @Getter(lazy = true)
    private final List<Bar> bars = barManager.getAll();

    public void addBar(Bar bar)
    {
        bars.get().get().add(bar);
    }
}

get()参照を返しますが、何らかの理由でget()2 回呼び出す必要があります。

于 2012-08-28T13:47:37.840 に答える