我目前正在替换所有标准 POJO,以使用 Lombok 来处理所有样板代码。
到目前为止还没有出现问题,但我在 lombok 实现中缺少的是没有生成的方法来将一个对象添加到集合中。
生成的代码:
private List<Object> list = new ArrayList<>();
public Object getObject(){..}
public void setObject(List<Object> o){..}
我想要额外的:
public void addObject(Object o) {..}
有人知道这是否会很快实现还是不可能实现?
1)我找不到它的票,并且根据对其他答案的评论,我提交了一张:https://github.com/rzwitserloot/lombok/issues/1905所以让我们看看:)
2)对于单个集合,似乎
@Delegate
可以完成这项工作:
interface CollectionAdders<E> {
boolean add(E e);
boolean addAll(Collection<? extends E> c);
}
interface ListGetters<E> {
E get(int index);
}
class Foo {
@Delegate(types={CollectionAdders.class, ListGetters.class})
List<String> names = new ArrayList<>();
}
生成:
Foo#add(E e)
Foo#addAll(Collection<? extends E> c)
Foo#get(int index)
请参阅此论坛帖子:https://groups.google.com/forum/#!topic/project-lombok/alektPraJ_Q
幸运的是,龙目岛有
[@Singular][1]
您可以使用 [@Singular][1]
将对象添加到 Collection,它也可以与 Map 一起使用。
@Builder
Class Person{
@Singular
List<String> phones;
}
使用生成器:
Person.builder()
.phone("123-456-789")
.phone("456-789-213")
.build();