龙目岛懒惰的可变集合的吸气剂

时间:2012-08-28 13:24:21

标签: java collections lombok

我有一个有集合的课程:

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>>>

如何对集合执行添加/删除操作?

2 个答案:

答案 0 :(得分:3)

您的解决方案确实很奇怪,取决于一些实现细节。此外,如果该领域尚未初始化,它会与NPE决裂。正确的解决方案始终有效:

getBars().add(bar);

答案 1 :(得分: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()