我想要拥有不可变的 myClass 对象。好的解决方案是使用 @Singular 注释。问题是,当我使用此注释时,方法 elements() 将元素附加到现有列表,而不是创建新列表:
假设我们有:
@Value
@Builder(toBuilder = true)
public class MyClass {
@Singular
private List<String> elemets;
}
和
MyClass.builder()
.elemets(Arrays.asList("elem1"))
.elemets(Arrays.asList("elem2"))
.build();
如果没有 @Singular 注释,我们的列表中有 elem2,如果有 @Singular 注释,我们就有 elem1 和 elem2,如果我只想有 elem2,我必须先使用clearElements()。
为什么实施方式不同?是否可以在我自己的实现中使用@Singular?
使用 @Singular 注释,我无法在 MyClassBuilder 类中实现 elemets(List elemets) 方法,因为我得到:“不支持手动添加 @Singular @Builder 将生成的方法。如果您想手动管理此字段/参数的构建器方面,不要使用@Singular。”
白衣染霜花
相关分类