Lombok 基础

Lombok 基本注解

Lombok 高级注解

Lombok FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/lombok-annotation-getter-setter.html

Lombok @Getter 和 @Setter 注解深入理解


@Getter@Setter 是两个常用的 Lombok 注解,它们用于自动生成 Java 类中属性字段的 getter 和 setter 方法。

Lombok 使用 Java 的注解处理器(Annotation Processor)来在编译时生成 getter 和 setter 方法的代码。当你使用 @Getter@Setter 注解标记字段或类时,Lombok 的注解处理器会扫描这些注解,并自动生成相应的 getter 和 setter 方法的代码。

@Getter 注解

@Getter 是 Lombok 提供的注解之一,用于自动生成类的 getter 方法。

源码如下:

@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface Getter {

	lombok.AccessLevel value() default lombok.AccessLevel.PUBLIC;

	AnyAnnotation[] onMethod() default {};

	boolean lazy() default false;

}

作用

它主要有两方面的作用:

  1. 自动生成属性的公共 getter 方法,允许访问类的成员变量。
  2. 减少手动编写 getter 方法的工作,提高代码可读性和可维护性。

注解属性

@Getter 注解本身具有一些属性,允许你自定义生成的 getter 方法的行为。这些属性可以在注解中设置,以满足特定需求。

以下是 @Getter 注解的自身属性:

  1. value 属性(默认为 AccessLevel.PUBLIC):用于指定生成的 getter 方法的访问级别。可以采用 AccessLevel 枚举中的值,包括 PUBLICPROTECTEDPACKAGEPRIVATE 等。默认情况下,生成的 getter 方法是公共的。
  2. lazy 属性(默认为 false):如果设置为 true,则生成的 getter 方法将采用懒加载策略。这意味着只有在第一次访问属性时才会初始化它,并且之后的访问会返回已初始化的值。这对于计算成本较高的属性或需要延迟初始化的属性很有用。
  3. onMethod 属性(默认为空字符串):用于指定生成的 getter 方法的名称。如果不指定此属性,Lombok 会根据字段名生成默认的 getter 方法名。但如果你想要自定义 getter 方法的名称,可以使用此属性。

通过使用这些属性,你可以更精确地控制生成的 getter 方法的行为,使其适应不同的需求和代码风格。注意,在使用这些属性时,你可以根据需要灵活地定制 getter 方法的访问级别、懒加载行为以及方法的名称。

用法

@Getter 注解从源码可以看出,其可以作用在字段/属性或类型上。

用于字段上的 @Getter 注解:

import lombok.Getter;

public class Person {

    @Getter
    private String name;

    @Getter
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

在这个示例中,@Getter 注解被用于字段 nameage 上,这将自动生成对应的 getName()getAge() 方法。

用于类上的 @Getter 注解:

import lombok.Getter;

@Getter
public class Person {

    private String name;

    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

在这个示例中,@Getter 注解被用于 Persion 类上,这将对 Person 类的所有属性都自动生成对应的 getter 方法。

@Setter 注解

@Setter 是 Lombok 提供的注解之一,用于自动生成类的 setter 方法。

源码如下:

@Target({ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.SOURCE)
public @interface Setter {

	lombok.AccessLevel value() default lombok.AccessLevel.PUBLIC;

	AnyAnnotation[] onMethod() default {};

	AnyAnnotation[] onParam() default {};

}

作用

它主要有两方面的作用:

  1. 自动生成属性的公共 setter 方法,允许设置类的成员变量。
  2. 减少手动编写 setter 方法的工作,提高代码可读性和可维护性。

注解属性

@Setter 注解本身具有一些属性,允许你自定义生成的 setter 方法的行为。这些属性可以在注解中设置,以满足特定需求。

以下是 @Setter 注解的自身属性:

  1. value 属性(默认为 AccessLevel.PUBLIC):用于指定生成的 setter 方法的访问级别。可以采用 AccessLevel 枚举中的值,包括 PUBLICPROTECTEDPACKAGEPRIVATE 等。默认情况下,生成的 setter 方法是公共的。
  2. onParam 属性(默认为空字符串):用于指定生成的 setter 方法的参数名称。默认情况下,Lombok 将使用属性名称作为 setter 方法的参数名称,但如果你想要自定义参数名称,可以使用此属性。
  3. onMethod 属性(默认为空字符串):用于指定生成的 setter 方法的名称。如果不指定此属性,Lombok 会根据字段名生成默认的 setter 方法名。但如果你想要自定义 setter 方法的名称,可以使用此属性。

通过使用这些属性,你可以更精确地控制生成的 setter 方法的行为,使其适应不同的需求和代码风格。你可以自定义 setter 方法的访问级别、参数名称以及方法的名称。这样可以灵活地适应各种情况,同时减少手动编写 setter 方法的工作。

用法

@Setter 注解从源码可以看出,其可以作用在字段/属性或类型上。

用于字段上的 @Setter 注解:

import lombok.Setter;

public class Person {

    @Setter
    private String name;

    @Setter
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

在这个示例中,@Setter 注解被用于字段 nameage 上,这将自动生成对应的 setName(String name) 和 setAge(int age) 方法。

用于类上的 @Setter 注解:

import lombok.Setter;

@Setter
public class Person {

    private String name;

    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

在这个示例中,@Setter 注解被用于 Persion 类上,这将对 Person 类的所有属性都自动生成对应的 setter 方法。

总结

总之,@Getter@Setter 注解是 Lombok 提供的方便工具,它们简化了 Java 类的 getter 和 setter 方法的编写,提高了代码的可读性和可维护性。通过在类和字段上使用这些注解,可以减少样板代码,使代码更加简洁。不过要确保在项目中使用 Lombok 之前,你的开发环境已经正确配置了 Lombok 插件,以便让注解处理器生效。

@NoArgsConstructor和@AllArgsConstructor是Lombok库中的两个常用注解,它们用于自动生成无参构造函数和 ...
@ToString注解是Lombok库提供的一种注解,用于自动生成一个类的toString()方法。@ToString注解@ToString ...
@Data注解是Lombok中的一个重要注解之一,它用于自动生成类的标准数据方法。总结总之,@Data注解是Lombok库中用于自动生成常用 ...
@Value注解是Lombok中的一个注解,它用于生成一个不可变(immutable)的Java类,该类包含了一些常用的方法,如构造函数、e ...
当你使用@Builder注解时,Lombok会在编译过程中生成一个新的内部类,该内部类包含所有字段的setter方法,以及一个build() ...