@Accessors的翻译是存取器,该注解主要是控制getter和setter方法的形式。
- chain决定set方法是void类型还是返回this,主要是为了能够进行链式set方法
- fluent是决定生成的get/set方法要不要set/get前缀
- prefix与定义属性前缀相同,且接下来的字符是大写时才生效
(1)手动生成的getter和setter方法
public class Boss {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2)使用@Accessors(chain = true)注解
@Data
@Accessors(chain = true)
public class Boss {
private String tName;
}
编译后文件的Boss.class中的代码(只截取了getter/setter方法)
public class Boss {
private String name;
public Boss() {
}
public String getName() {
return this.name;
}
public Boss setName(String name) {
this.name = name;
return this;
}
}
(3)使用@Accessors(fluent = true)注解
@Data
@Accessors(fluent = true)
public class Boss {
private String tName;
}
编译后文件的Boss.class中的代码(只截取了getter/setter方法)
public class Boss {
private String name;
public Boss() {
}
public String name() {
return this.name;
}
public Boss name(String name) {
this.name = name;
return this;
}
}
(4)使用@Accessors(prefix = "t")注解
@Data
@Accessors(prefix = "t")
public class Boss {
private String tName;
}
编译后文件的Boss.class中的代码(只截取了getter/setter方法)
public class Boss {
private String tName;
public Boss() {
}
public String getName() {
return this.tName;
}
public void setName(String tName) {
this.tName = tName;
}
}