java - 如何为 lombok 编写具有单一注释的集合数据类型的自定义 build() 函数?

标签 java java-8 annotations lombok

@ToString
@EqualsAndHashCode
@Getter
@Builder(builderClassName = "Builder")
public class elements{

  @Singular("item")
  private final Set<int> items;

  private final int b;

  public static final class Builder {

    public elements build(){

      return new elements(items, b);

    }
  }


}

当没有单数注释时,构造函数可以工作,但是当我在集合上有单数注释时,构造函数会说它不可用。

Java.util.set 不能是 Java.util.ArrayList

那么,调用这个构造函数的正确方法是什么?

最佳答案

当使用@Singular时,lombok生成的build()方法变得相当复杂(以及生成的构建器的其他部分)。以下是 lombok 默认生成的内容(从示例的 delombok 输出中提取):

    public Elements build() {
        java.util.Set<Integer> items;
        switch (this.items == null ? 0 : this.items.size()) {
        case 0: 
            items = java.util.Collections.emptySet();
            break;

        case 1: 
            items = java.util.Collections.singleton(this.items.get(0));
            break;

        default: 
            items = new java.util.LinkedHashSet<Integer>(this.items.size() < 1073741824 ? 1 + this.items.size() + (this.items.size() - 3) / 3 : java.lang.Integer.MAX_VALUE);
            items.addAll(this.items);
            items = java.util.Collections.unmodifiableSet(items);
        }
        return new Elements(items, b);
    }

您可以将其用作自定义 build() 方法的起点。

关于java - 如何为 lombok 编写具有单一注释的集合数据类型的自定义 build() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51521545/

相关文章:

c# - Java 垃圾回收

java - 在界面中使用@RequestMapping 是不是一个坏主意?

java - 了解流操作的 Java 类型

java - 在 lambda 表达式中设置变量

java - 为什么java类不从实现的接口(interface)继承注解?

java - Struts2 注释的还是基于 XML 的?哪个更容易管理和简单?

Swift 4 mapkit 在隐藏 map 注释后重新加载 map

java - 跨机器运送 Maven 依赖项

java 8 - ZonedDateTime 不等于另一个 ZonedDateTime

java - 将 java.time.LocalDate 转换为 java.util.Date 类型