TIL

Today I Learned. 知ったこと、学んだことを書いていく

【Java】lombokで自動生成されるsetter(getter)を上書きする

例えば、特定のプロパティのみ、自分で書いたsetterを使いたいときとか

やることは

  • ただ単にsetXxx()を作ればいいだけ

だった

以下、サンプルコード

サンプル

People.java

以下のようなPeopleクラスを作成する

package sample;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class People {
    private String name;
    private int age;

    // @Dataで自動生成されるsetAge()を上書きする
    public void setAge(int age) {
        this.age = age + 100;
    }
}

また、lombokアノテーションは以下の通り

  • @Data: すべてのプロパティに対してsetXxx()getXxx()を生成
  • @NoArgsConstructor: 引数なしのコンストラクタを生成
  • @AllArgsConstructor: 全プロパティを引数に取るコンストラクタを生成

App.java

package sample;

/**
 * Hello world!
 *
 */
public class App
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
       People people = new People("Taro", 11);
       // 自分で定義したsetAge()が呼ばれる
       people.setAge(20);

       System.out.println(people);  // People(name=Taro, age=120)
    }
}

おぉ、しっかりと100足されている!