Lombok 项目 - 值注释:是否可以抑制 @Getter?

Project Lombok - Value annotation: is it possible to suppress @Getter?

在搜索 Lombok feature-list and in particular the documentation for the Getter/Setter and @Value 注释后,我无法找到任何抑制 @Getter 生成的代码的设置。

In practice, @Value is shorthand for: final @ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @Getter

这很重要,因为我不想泄露对本身可变对象的引用。

有效 Java 在 "Item 39: Make defensive copies when needed" 中引用了此类问题。 @Wither 似乎可以通过制作实际的防御副本来部分解决这个问题,但我想尽可能避免泄漏属性,无论它们是可变的。

虽然可以推出自己的 @Value annotation that omits the @Getter 我当然不想这样做,因为如果这样的设置已经存在,那会给代码库增加不必要的复杂性。

您可以使用: @Value @Getter(AccessLevel.NONE)

AccessLevel.NONE 指示 Lombok 不生成吸气剂。这是你现在能做的最好的事情了。