如何使用Lombok @Value

时间:2018-11-09 02:26:54

标签: setter lombok

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

我有一个使用lombok @Value的类,其中每个字段都将变为私有且为final。现在,我想为field3提供一个二传手,因为field3是最终的,所以它不起作用。我应该在这里做什么?

2 个答案:

答案 0 :(得分:2)

然后不要使用@Value@Value用于值类,即其实例是不可变的类。如果您希望字段可变,那么您显然没有值类。

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

答案 1 :(得分:-1)

为什么field3是final?使用final关键字声明变量时,其值本质上不能修改为常量。您应该将其删除!

在此处创建对象时设置属性

XXX s = XXX.builder()。field1(“ XX”)。field2(“ XX”)。field3(“ XX”)。build(); 这里不需要二传手