使用前的准备
@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("北京市");
}
}
@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方法
}
}