@Accessors

@Accessors 是一个注解,通常出现在 Lombok 库中,用于控制类中字段的 getter 和 setter 方法的生成行为。Lombok 是一个 Java 库,通过注解自动生成常见的代码(如 getter、setter、构造函数等),从而减少样板代码的编写。

@Accessors 的作用

@Accessors 注解主要用于配置生成的 getter 和 setter 方法的命名风格和行为。它有以下常用属性:

  1. chain:

    • 类型:boolean

    • 默认值:false

    • 作用:如果设置为 true,生成的 setter 方法会返回当前对象(即 this),从而支持方法链式调用(Fluent API)。

    • 示例:

      @Accessors(chain = true)
      public class User {
          private String name;
          private int age;
      }

      生成的 setter 方法:

      public User setName(String name) {
          this.name = name;
          return this;
      }
      public User setAge(int age) {
          this.age = age;
          return this;
      }

      使用时可以链式调用:

      User user = new User().setName("Alice").setAge(25);

  2. fluent:

    • 类型:boolean

    • 默认值:false

    • 作用:如果设置为 true,生成的 getter 和 setter 方法会省略 get 和 set 前缀,直接使用字段名作为方法名。

    • 示例:

      @Accessors(fluent = true)
      public class User {
          private String name;
          private int age;
      }

      生成的 getter 和 setter 方法:

      public String name() {
          return this.name;
      }
      public User name(String name) {
          this.name = name;
          return this;
      }
      public int age() {
          return this.age;
      }
      public User age(int age) {
          this.age = age;
          return this;
      }

      使用时可以像这样调用:

      User user = new User().name("Alice").age(25);

  3. prefix:

    • 类型:String[]

    • 默认值:空数组

    • 作用:指定字段名的前缀,生成的 getter 和 setter 方法会去掉这些前缀。

    • 示例:

      @Accessors(prefix = "m_")
      public class User {
          private String m_name;
          private int m_age;
      }

      生成的 getter 和 setter 方法:

      public String getName() {
          return this.m_name;
      }
      public void setName(String name) {
          this.m_name = name;
      }
      public int getAge() {
          return this.m_age;
      }
      public void setAge(int age) {
          this.m_age = age;
      }

      注意:prefix 只是去掉前缀,不会改变字段的实际名称。

使用场景

  • 链式调用:当你希望 setter 方法支持链式调用时,可以使用 @Accessors(chain = true)

  • 简化方法名:当你希望 getter 和 setter 方法名更简洁时,可以使用 @Accessors(fluent = true)

  • 字段名前缀:当字段名有统一的前缀时,可以使用 @Accessors(prefix = "前缀") 来简化 getter 和 setter 方法名。

示例代码

import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true, prefix = "m_")
public class User {
    private String m_name;
    private int m_age;
}

// 使用
public class Main {
    public static void main(String[] args) {
        User user = new User().setName("Alice").setAge(25);
        System.out.println(user.getName()); // 输出: Alice
        System.out.println(user.getAge());  // 输出: 25
    }
}

总结

  • @Accessors 是 Lombok 提供的一个注解,用于配置 getter 和 setter 方法的生成行为。

  • 它支持链式调用、简化方法名以及处理字段名前缀等功能。

  • 通过 @Accessors,可以进一步减少样板代码,使代码更加简洁和易读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值