当前位置:   article > 正文

Lombok - Accessors详细说明_lombok.experimental.accessors

lombok.experimental.accessors

分享知识 传递快乐

Accessor 的中文含义是存取器,@Accessors 用于配置 get/set 方法的生成结果,同时也支持链式操作,减少多余对象的创建,另外 builder 类元信息又可以减少。

@Accessors 注解有三个参数,下面分别简单说明一下:

  • fluent:中文含义是流畅的,设置为 true,则 get/set 方法的方法名都是基础属性名,且 set 方法返回当前对象
  • chain:中文含义是链式的,设置为 true,则 set 方法返回当前对象
  • prefix:中文含义是前缀,用于生成 get/set 方法的字段名会忽视指定前缀(遵守驼峰命名)

示例代码:

  1. import lombok.Data;
  2. import lombok.experimental.Accessors;
  3. @Data
  4. public class UserEntity {
  5.     private Long id;
  6.     private String name;
  7.     private int age;
  8. }

1. fluent

@Accessors(fluent = true) 后编译后的代码:

  1. public class UserEntity
  2. {
  3.     private Long id;
  4.     private String name;
  5.     private int age;
  6.     
  7.     public Long id() {
  8.         return this.id;
  9.     }
  10.     
  11.     public String name() {
  12.         return this.name;
  13.     }
  14.     
  15.     public int age() {
  16.         return this.age;
  17.     }
  18.     
  19.     public UserEntity id(final Long id) {
  20.         this.id = id;
  21.         return this;
  22.     }
  23.     
  24.     public UserEntity name(final String name) {
  25.         this.name = name;
  26.         return this;
  27.     }
  28.     
  29.     public UserEntity age(final int age) {
  30.         this.age = age;
  31.         return this;
  32.     }
  33.     
  34.     @Override
  35.     public boolean equals(final Object o) {
  36.         if (o == this) {
  37.             return true;
  38.         }
  39.         if (!(o instanceof UserEntity)) {
  40.             return false;
  41.         }
  42.         final UserEntity other = (UserEntity)o;
  43.         if (!other.canEqual(this)) {
  44.             return false;
  45.         }
  46.         final Object this$id = this.id();
  47.         final Object other$id = other.id();
  48.         Label_0065: {
  49.             if (this$id == null) {
  50.                 if (other$id == null) {
  51.                     break Label_0065;
  52.                 }
  53.             }
  54.             else if (this$id.equals(other$id)) {
  55.                 break Label_0065;
  56.             }
  57.             return false;
  58.         }
  59.         final Object this$name = this.name();
  60.         final Object other$name = other.name();
  61.         if (this$name == null) {
  62.             if (other$name == null) {
  63.                 return this.age() == other.age();
  64.             }
  65.         }
  66.         else if (this$name.equals(other$name)) {
  67.             return this.age() == other.age();
  68.         }
  69.         return false;
  70.     }
  71.     
  72.     protected boolean canEqual(final Object other) {
  73.         return other instanceof UserEntity;
  74.     }
  75.     
  76.     @Override
  77.     public int hashCode() {
  78.         final int PRIME = 59;
  79.         int result = 1;
  80.         final Object $id = this.id();
  81.         result = result * 59 + (($id == null) ? 43 : $id.hashCode());
  82.         final Object $name = this.name();
  83.         result = result * 59 + (($name == null) ? 43 : $name.hashCode());
  84.         result = result * 59 + this.age();
  85.         return result;
  86.     }
  87.     
  88.     @Override
  89.     public String toString() {
  90.         return "UserEntity(id=" + this.id() + ", name=" + this.name() + ", age=" + this.age() + ")";
  91.     }
  92. }

2. chain

@Accessors(chain = true) 编译后的代码:

  1. public class UserEntity
  2. {
  3.     private Long id;
  4.     private String name;
  5.     private int age;
  6.     
  7.     public Long getId() {
  8.         return this.id;
  9.     }
  10.     
  11.     public String getName() {
  12.         return this.name;
  13.     }
  14.     
  15.     public int getAge() {
  16.         return this.age;
  17.     }
  18.     
  19.     public UserEntity setId(final Long id) {
  20.         this.id = id;
  21.         return this;
  22.     }
  23.     
  24.     public UserEntity setName(final String name) {
  25.         this.name = name;
  26.         return this;
  27.     }
  28.     
  29.     public UserEntity setAge(final int age) {
  30.         this.age = age;
  31.         return this;
  32.     }
  33.     
  34.     @Override
  35.     public boolean equals(final Object o) {
  36.         if (o == this) {
  37.             return true;
  38.         }
  39.         if (!(o instanceof UserEntity)) {
  40.             return false;
  41.         }
  42.         final UserEntity other = (UserEntity)o;
  43.         if (!other.canEqual(this)) {
  44.             return false;
  45.         }
  46.         final Object this$id = this.getId();
  47.         final Object other$id = other.getId();
  48.         Label_0065: {
  49.             if (this$id == null) {
  50.                 if (other$id == null) {
  51.                     break Label_0065;
  52.                 }
  53.             }
  54.             else if (this$id.equals(other$id)) {
  55.                 break Label_0065;
  56.             }
  57.             return false;
  58.         }
  59.         final Object this$name = this.getName();
  60.         final Object other$name = other.getName();
  61.         if (this$name == null) {
  62.             if (other$name == null) {
  63.                 return this.getAge() == other.getAge();
  64.             }
  65.         }
  66.         else if (this$name.equals(other$name)) {
  67.             return this.getAge() == other.getAge();
  68.         }
  69.         return false;
  70.     }
  71.     
  72.     protected boolean canEqual(final Object other) {
  73.         return other instanceof UserEntity;
  74.     }
  75.     
  76.     @Override
  77.     public int hashCode() {
  78.         final int PRIME = 59;
  79.         int result = 1;
  80.         final Object $id = this.getId();
  81.         result = result * 59 + (($id == null) ? 43 : $id.hashCode());
  82.         final Object $name = this.getName();
  83.         result = result * 59 + (($name == null) ? 43 : $name.hashCode());
  84.         result = result * 59 + this.getAge();
  85.         return result;
  86.     }
  87.     
  88.     @Override
  89.     public String toString() {
  90.         return "UserEntity(id=" + this.getId() + ", name=" + this.getName() + ", age=" + this.getAge() + ")";
  91.     }
  92. }


3. prefix

@Accessors(prefix = "user") 设置后缀示例

  1. import lombok.Data;
  2. import lombok.experimental.Accessors;
  3. @Data
  4. @Accessors(prefix = "user")
  5. public class UserEntity {
  6.     private Long userId;
  7.     private String userName;
  8.     private int userAge;
  9. }


编译后的代码:

  1. public class UserEntity
  2. {
  3.     private Long userId;
  4.     private String userName;
  5.     private int userAge;
  6.     
  7.     public Long getId() {
  8.         return this.userId;
  9.     }
  10.     
  11.     public String getName() {
  12.         return this.userName;
  13.     }
  14.     
  15.     public int getAge() {
  16.         return this.userAge;
  17.     }
  18.     
  19.     public void setId(final Long userId) {
  20.         this.userId = userId;
  21.     }
  22.     
  23.     public void setName(final String userName) {
  24.         this.userName = userName;
  25.     }
  26.     
  27.     public void setAge(final int userAge) {
  28.         this.userAge = userAge;
  29.     }
  30.     
  31.     @Override
  32.     public boolean equals(final Object o) {
  33.         if (o == this) {
  34.             return true;
  35.         }
  36.         if (!(o instanceof UserEntity)) {
  37.             return false;
  38.         }
  39.         final UserEntity other = (UserEntity)o;
  40.         if (!other.canEqual(this)) {
  41.             return false;
  42.         }
  43.         final Object this$userId = this.getId();
  44.         final Object other$userId = other.getId();
  45.         Label_0065: {
  46.             if (this$userId == null) {
  47.                 if (other$userId == null) {
  48.                     break Label_0065;
  49.                 }
  50.             }
  51.             else if (this$userId.equals(other$userId)) {
  52.                 break Label_0065;
  53.             }
  54.             return false;
  55.         }
  56.         final Object this$userName = this.getName();
  57.         final Object other$userName = other.getName();
  58.         if (this$userName == null) {
  59.             if (other$userName == null) {
  60.                 return this.getAge() == other.getAge();
  61.             }
  62.         }
  63.         else if (this$userName.equals(other$userName)) {
  64.             return this.getAge() == other.getAge();
  65.         }
  66.         return false;
  67.     }
  68.     
  69.     protected boolean canEqual(final Object other) {
  70.         return other instanceof UserEntity;
  71.     }
  72.     
  73.     @Override
  74.     public int hashCode() {
  75.         final int PRIME = 59;
  76.         int result = 1;
  77.         final Object $userId = this.getId();
  78.         result = result * 59 + (($userId == null) ? 43 : $userId.hashCode());
  79.         final Object $userName = this.getName();
  80.         result = result * 59 + (($userName == null) ? 43 : $userName.hashCode());
  81.         result = result * 59 + this.getAge();
  82.         return result;
  83.     }
  84.     
  85.     @Override
  86.     public String toString() {
  87.         return "UserEntity(userId=" + this.getId() + ", userName=" + this.getName() + ", userAge=" + this.getAge() + ")";
  88.     }
  89. }


 

—————————
如有不足请留言指正
相互学习,共同进步

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/307523
推荐阅读
相关标签
  

闽ICP备14008679号