如何使用 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
,但请仔细阅读其文档。)
@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
,但请仔细阅读其文档。)