使用前的准备
@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 方法 } }