使用 Lombok 添加默认的@Getter和@Setter访问器方法

1,286 阅读2分钟

学习使用Lombok添加默认的访问器方法(getter和setter),并为特定需求省略这些方法。

1.默认行为

Lombok提供了两个注解来给POJO添加getter和setter方法。

  • @Getter - 可以应用于任何字段和类。当应用于一个字段时,lombok为该字段建立一个标准的getter。当应用在一个类上时,lombok为所有非静态字段建立getter方法。
  • @Setter - 与*@Getter的*工作类似,唯一的区别是它使lombok为一个类中的字段或所有非静态字段建立标准的setter方法。

例如,让我们看看Tag类,我们已经添加了*@Getter@Setter*注解。Lombok将为idname 字段建立标准的getters和setters。

@Getter
@Setter
class Tag {
      private long id;
      private String name;
}

Lombok Accessors

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为所有字段建立访问器。当在一个字段上使用时,其效果只限于该字段。

学习愉快!!

Sourceocde 下载