如何使用 Lombok @Value 添加 setter 到 Class

How to add setter to Class using Lombok @Value

@Value
@Builder
public class XXX {
    String field1;
    String field2;
    String field3;
}

我有一个 class 使用 lombok @Value 如上所述,其中每个字段都将设为私有和最终。现在,我想要 field3 的 setter,这不起作用,因为 field3 是最终的。我应该在这里做什么?

为什么 field3 是最终的?当变量声明为 final 关键字时,它的值不能被修改,本质上是一个常量。你应该删除它!

这里是创建对象时设置的属性

XXX s= XXX.builder().field1("XX").field2("XX").field3("XX").build(); setter这里不需要

那时候不要用@Value@Value 用于值 classes,即实例不可变的 classes。如果你希望一个字段是可变的,那么你显然没有值 class.

相反,手动设置所有其他字段 final。然后在 class 上使用 @Getter@RequiredArgsConstructor(如果需要,还可以使用 @EqualsAndHashCode),在所有非最终字段上使用 @Setter。 (或使用 @Data,但请仔细阅读其文档。)