使用前的准备
@Builder 和 @Accessors 都是 lombok 下的注解,都可以用于简化 get/set 方法。
要使用 Lombok,需要添加插件并导入依赖。插件直接在 IDEA 的 settings-Plugins 中搜索 lombok,下载后重启 IDEA 即可,依赖如下:

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency>
@Builder 注解
@Builder 注解可以更方便的在对象初始化的时候对属性进行赋值,不用大量的调用 setter 方法,代码更易于阅读与编写。
@Data
@Builder
@NoArgsConstructor
public class User {
String name;
String address;
public static void main(String[] args) {
//builder 方式赋值。取值仍然要通过 get。
User user=new User().builder().name("teacher").address(" 河南省 ").build();
//set 方式赋值
user.setName("student");
user.setAddress(" 北京市 ");
}
}上述在使用中会报错,会提示“不应该通过类实例访问静态成员”,直接用类名调用即可,例如:
User user=User.builder().name("teacher").address(" 河南省 ").build();@Accessors 注解
@Accessors 有 3 个值:flunt,chain,prefix;
fluent ,Boolean 类型,默认 false,且 flunt 为 true,则 chain 默认为 true。
如果为 true,name 的 getter 就是 name(),setter 方法就是 name(T newValue)。chain ,Boolean 类型,默认 false,且 flunt 为 true,则 chain 默认为 true。
如果为 true,产生的 setter 返回的 this 即对象实例本身而不是 void,因此可以直接再使用 set 方法或者调用其他函数。prefix ,一系列 string 类型。如果显示,属性必须加上某些定义的前缀。前缀被提取出来后才是属性名。字符都是字母,紧接着前缀后的字符一定不能是小写字母。例如,pepper 对前缀 p 不是相等匹配,而跟 pEpper 是匹配的 (也就意味着属性的基本名字是 epper)。
注意:@Accessors 注解可以在类和属性上使用。如果 @Accessors 注解在一个属性上,再对那个属性的类的 @Accessors 注解就会被忽略。
@Data
@Accessors(fluent = true)
@NoArgsConstructor
public class User {
String name;
String Address;
public static void main(String[] args) {
//accesstor flunt=true,此时默认 chain=true
User user=new User().name("teacher").Address(" 河北 "); // 赋值,类似 set 方法
String address=user.Address(); // 取值,类似 get 方法
}
}@Data
@Accessors(chain = true)
@NoArgsConstructor
public class User {
String name;
String Address;
public static void main(String[] args) {
//accesstor chain=true,未设置 flunt,默认 flunt=false
User user=new User().setName("teacher").setAddress(" 河北 "); // 赋值,类似 set 方法
String address=user.getAddress(); // 取值,类似 get 方法
}
}