@Accessors:getter/setterをカスタマイズするためのアノテーション
@Getter/@Setterなどと一緒に使う
オプションは "chain" "fluent" "prefix" の3種類
環境
Java : 1.8
Lombok : 1.18.16
(SpringBoot : 2.3.7)
setterのメソッドチェーン化
@Accessors(chain = true)
でsetterをメソッドチェーン化する
↓
user.setName("Tom").setAge(24);
のように連続して記述できる
<実際に生成されるコード>
public User setName(final String name) {
this.name = name;
return this;
}
<ポイント>
つけるのはクラスでもフィールドでも可、ただしどちらに付けてもクラス内に一つでも存在すると全フィールドに適用される
getter/setterをフィールド名で使用
@Accessors(fluent = true)
でgetter/setter名をフィールド名で使用できるようにする
↓
String name = user.name(); // getter
user.name("Tom"); // setter
のようにフィールド名でgetter/setterを記述できる
<実際に生成されるコード>
public String name() {
return this.name;
}
public void name(final String name) {
this.name = name;
return this;
}
<ポイント>
つけるのはクラスでもフィールドでも可、chainと違い、フィールドに付けた場合はそのフィールドのみに適用される
prefix部分を除いた名称を用いてgetter/setterを定義
@Accessors(prefix = "f")
private String fName;
でprefix部分を除いた名称を用いてgetter/setterを定義する
↓
String name = user.getName(); // getter
user.setName("Tom"); // setter
のようにprefix部分を除いた名称でgetter/setterを記述できる。
<実際に生成されるコード>
public String getName() {
return this.fName;
}
public void setName(final String fName) {
this.fName = fName;
}
<ポイント>
つけるのはクラスでもフィールドでも可
→クラスに付与した場合:全フィールドに適用、prefixを満たさないフィールドはgetter/setterが生成されない
フィールドに付与した場合:そのフィールドのみに適用
<具体例>
@Getter
@Setter
@Accessors(prefix = {"f", "t"})
public class User {
private Integer id;
private String fName;
private Integer tAge;
}
↓
○実際に生成されるコード
public String getName() {
return this.fName;
}
public void setName(final String fName) {
this.fName = fName;
}
public Integer getAge() {
return this.tAge;
}
public void setAge(final String tAge) {
this.tAge = tAge;
}
private Integer id;
はprefixとして記述した”f”も”t”もついていないのでコードが生成されない。