LoginSignup
0
0

More than 3 years have passed since last update.

Lombokの@Accessorsについて

Last updated at Posted at 2021-01-18

@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”もついていないのでコードが生成されない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0