在龙目岛省去一位塞特犬


232

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

龙目岛如何忽略此字段?

Answers:


415

您可以将访问级别传递给@Getter@Setter注释。这对于使getter或setter受到保护或私有非常有用。它也可以用来覆盖默认值。

使用@Data,默认情况下,您可以公共访问访问器。现在,您可以使用特殊访问级别NONE来完全省略访问器,如下所示:

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

1
完善。如果私有字段是POJO并也用@Delegate()注释,则可以将其用于将一组属性提取到单独的可重用类中。这对于将相同的一组属性应用于多个类(用于添加属性的混合类)可能很有用。例如,表示可以应用于各种XML元素建模的一组属性的mixin。
xorcus

您是否有与在builder中省略一个字段类似的事情?
zt1983811 '18

1
您是说该属性不应显示在构建器中?不,没有直接的目的。请记住,尽管@Builder可以将其放在函数,构造函数以及类中,并且仅提供设置该函数签名中出现的那些属性。
Michael Piefel '18年

它没有为此属性实现任何setter和getter,默认情况下,@ Data包含setter和getter。提及将被排除在外AccessLevel.NONE
拉姆

41

根据@Data描述,您可以使用:

所有生成的getter和setter将是公开的。要覆盖访问级别,请使用显式的@Setter和/或@Getter注释对字段或类进行注释。您还可以使用此批注(通过将其与AccessLevel.NONE结合使用)来完全禁止生成getter和/或setter。


-3

如果您将setter和getter设为私有,则将在PMD检查中显示。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.