省略Lombok中的一个Setter/Getter

396

我想在Lombok中使用数据类。由于它有大约十几个字段,因此我用@Data进行了注释,以生成所有setter和getter。但是有一个特殊的字段,我不想实现访问器。

Lombok如何省略掉这个字段?

2个回答

692
您可以在@Getter@Setter注释中传递访问级别。这对于使getter或setter受保护或私有非常有用。它还可以用于覆盖默认值。
使用@Data,默认情况下可以公开访问访问器。您现在可以使用特殊的访问级别NONE完全省略访问器,如下所示:
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

1
完美。如果私有字段是POJO并且还带有@Delegate()注释,则可以将其用于将一组属性提取到单独的可重用类中。这可能对于将相同的属性集应用于多个类非常有用(一种混入添加属性)。例如,一个混合表示适用于各种XML元素建模的属性集。 - xorcus
1
你有类似的东西可以在构建器中省略一个字段吗? - zt1983811
2
你的意思是这个属性不应该在构建器中显示吗?不,没有直接的方法可以做到这一点。但请记住,@Builder 可以放在函数、构造函数以及类上,并且只提供设置那些出现在该函数签名中的属性。 - Michael Piefel
它没有为此属性实现任何setter和getter,而@Data默认包含setter和getter。通过提及AccessLevel.NONE可以将其排除在外。 - Ram

56
根据@Data描述,您可以使用以下方式:

所有生成的getter和setter将是公共的。要覆盖访问级别,请在字段或类上注释明确的@Setter和/或@Getter注释。您还可以使用此注释(通过与AccessLevel.NONE组合)来完全禁止生成getter和/或setter。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接