使用 lombok 添加列表方法

问题描述 投票:0回答:3

我目前正在替换所有标准 POJO,以使用 Lombok 来处理所有样板代码。

到目前为止还没有出现问题,但我在 lombok 实现中缺少的是没有生成的方法来将一个对象添加到集合中。

生成的代码:

private List<Object> list = new ArrayList<>();

public Object getObject(){..}

public void setObject(List<Object> o){..}

我想要额外的:

public void addObject(Object o) {..}

有人知道这是否会很快实现还是不可能实现?

java lombok
3个回答
4
投票

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


4
投票

目前这肯定是不可能的。有这样的提案,但优先级较低(甚至被拒绝)。

其实我已经找不到了。您可能想尝试一下问题列表

现在,我偶然发现了这个线程,它展示了一个仅限于单个变量的有趣的解决方法。

坏消息

这不太可能在不久的将来实现。有太多的功能请求需要实现和维护它们(或其中任何重要的部分)。请参阅此问题评论


0
投票

幸运的是,龙目岛有

[@Singular][1]
您可以使用
[@Singular][1]
将对象添加到 Collection,它也可以与 Map 一起使用。

@Builder
Class Person{
    @Singular
    List<String> phones;
}

使用生成器:

Person.builder()
    .phone("123-456-789")
    .phone("456-789-213")
    .build();
© www.soinside.com 2019 - 2024. All rights reserved.