学习使用Lombok添加默认的访问器方法(getter和setter),并为特定需求省略这些方法。
1.默认行为
Lombok提供了两个注解来给POJO添加getter和setter方法。
@Getter- 可以应用于任何字段和类。当应用于一个字段时,lombok为该字段建立一个标准的getter。当应用在一个类上时,lombok为所有非静态字段建立getter方法。@Setter- 与*@Getter的*工作类似,唯一的区别是它使lombok为一个类中的字段或所有非静态字段建立标准的setter方法。
例如,让我们看看Tag类,我们已经添加了*@Getter和@Setter*注解。Lombok将为id 和name 字段建立标准的getters和setters。
@Getter
@Setter
class Tag {
private long id;
private String name;
}
Lombok添加了这些访问器方法
2.省略字段上的访问器
为了防止Lombok在字段上构建访问器方法,我们有两个选择。
2.1.在类上设置AccessLevel.NONE
类的AccessLevel.NONE将使Lombok不为该类中的任何字段建立任何访问器方法。这相当于完全不应用accessor注解。
在下面的例子中,Lombok将只构建getter方法,而跳过生成所有setter方法。
@Getter
@Setter(AccessLevel.NONE)
class Tag
{
private long id;
private String name;
private boolean status;
}
2.2.在字段上设置AccessLevel.NONE
为了只跳过特定字段的setter方法,我们需要只在这些字段上使用AccessLevel.NONE。
在给定的例子中,将不会有任何字段状态的setter方法。
@Getter
@Setter
class Tag
{
private long id;
private String name;
@Setter(AccessLevel.NONE)
private boolean status;
}
3.@Data注解
Lombok@Data 注释是在一条语句中应用一组注释的捷径。这些注解是。
- @Getter
- @Setter
- @RequiredArgsConstructor
- @ToString
- @相等的哈希码(EqualsAndHashCode
很明显,@Data 导致该类有公共的getter和setter方法。如果我们想省略几个字段上的默认访问器,我们可以在类的字段上应用AccessLevel.NONE ,如上节所示。
在给出的例子中,Lombok不会为字段status建立setter方法。
@Data
class Tag
{
private long id;
private String name;
@Setter(AccessLevel.NONE)
private boolean status;
}
4.结论
从上面的讨论中可以看出,为了省略Lombok默认生成的getter和setter方法,我们必须使用AccessLevel.NONE ,同时使用各自的*@Getter或@Setter*注释。
当AccessLevel.NONE ,它可以防止Lombok为所有字段建立访问器。当在一个字段上使用时,其效果只限于该字段。
学习愉快!!
