我有一个有集合的课程:
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>>>
如何对集合执行添加/删除操作?
答案 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()
。