public @Data class Person { ... }
据我所知,当我使用@Data
注释标记一个类时,Lombok将为所有字段提供getter,为所有非final字段提供setter。我想关闭一个实例非最终字段的getter和setter ,我该如何实现?
我期待什么?要找到像
这样的注释@Setter(provide=false)
@Getter(provide=false)
private Map<...> dialogs;
或
@Data(excludeFields={"dialogs"})
我搜索了很多并在官方网站上查找,但我一无所获 我们将不胜感激。谢谢。
答案 0 :(得分:4)
您可以按the website上的说明在字段上使用@Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE)
。
披露:我是龙目岛的开发者。
答案 1 :(得分:3)
我不知道如何防止为特定字段生成Getter / Setter,但是,有一种技巧使得访问者在类外部不可见。
@Data
public class Person {
private String name;
private int age;
@Getter(AccessLevel.PRIVATE) @Setter(AccessLevel.PRIVATE)
private Map<String, String> dialog;
}
使用AccessLevel.PRIVATE
dialog
的Getter / Setter将不会在课外看到,这类似于该类没有该字段的访问者。
修改强>
正如@Roel_Spilker所提到的,有一种方法可以禁用getter / setter生成。 webpage for Getter/Setter说:
您可以使用特殊的
AccessLevel.NONE
访问级别,始终为任何字段手动停用getter / setter生成。这样,您就可以覆盖类上@Getter
,@Setter
或@Data
注释的行为。
因此,您应该使用@Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE)
而不是将其设为私有。