Lombok 基础

Lombok 基本注解

Lombok 高级注解

Lombok FAQ

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

Lombok @Accessors 注解深入理解


@Accessors 注解是 Lombok 提供的一种注解,它允许您自定义 JavaBean 的 getter 和 setter 方法的生成方式。

@Accessors 注解的原理是通过 Lombok 的 AST(Abstract Syntax Tree)转换器,在编译时修改 Java 源代码,根据注解配置生成相应的 getter 和 setter 方法。这样,开发人员无需手动编写这些方法,可以通过注解的方式来配置生成的方法的样式和行为,提高了代码的简洁性和可读性。

@Accessors 注解

@Accessors 是 Lombok 库中的一个注解,用于配置生成的 getter 和 setter 方法的样式。

源码如下:

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

	boolean fluent() default false;

	boolean chain() default false;

	String[] prefix() default {};
}

作用

@Accessors 注解的主要作用是配置生成的 getter 和 setter 方法的名称以及其他相关选项,以满足项目中的特定需求。通过使用该注解,您可以更灵活地控制生成的方法的名称和格式,以提高代码的可读性和可维护性。

注解属性

@Accessors 注解有几个重要的属性,可以用来配置生成的方法:

  • chain :默认为 false,如果设置为 true,生成的 setter 方法将返回当前对象,以支持方法链式调用。
  • fluent :默认为 false,如果设置为 true,生成的 setter 方法的名称将以"fluent"样式命名,通常是去掉 set 前缀并将首字母小写。
  • prefix :指定生成的 getter 和 setter 方法的前缀。默认为 "",表示没有前缀。

用法

以下是 @Accessors 注解的使用示例:

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

@Accessors(chain = true, fluent = true, prefix = "_")
@ToString
public class Person {
    @Getter @Setter private String _firstName;
    @Getter @Setter private String _lastName;
    @Getter @Setter(AccessLevel.PROTECTED) private int _age;
}

在上面的示例中,我们使用 @Accessors 注解来配置 Person 类的生成方法。具体的配置选项包括:

  • chain = true :生成的 setter 方法支持方法链式调用。
  • fluent = true :生成的 setter 方法采用"fluent"样式的命名,例如 setFirstName 将生成 firstName(String firstName) 方法。
  • prefix = "_" :生成的 getter 和 setter 方法的前缀都是下划线"_"。
  • @Getter@Setter 注解用于生成相应的 getter 和 setter 方法,其中 @Setter 的访问级别设置为 AccessLevel.PROTECTED,以限制 setter 方法的访问级别。

总结

总之,@Accessors 注解是 Lombok 库提供的一个强大工具,可以定制生成的 getter 和 setter 方法的行为,以满足不同项目的需求。通过合理使用该注解,可以减少样板代码的编写,提高代码的可维护性。但是请注意,在使用 Lombok 时,需要确保项目中使用了 Lombok 的插件或者集成了 Lombok 的编译支持,以便在编译时正确处理这些注解。