@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
那么,调用此构造函数的正确方法是什么?
答案 0 :(得分:2)
使用@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()
方法的起点。