Java Lombok | getter、setterメソッドの自動生成 - @Getter @Setter

@Getter@Setterの使用

@Getterでgetterメソッドを、@Setterでsetterメソッドを自動生成できる。

package com.devkuma.tutorial.lombok;

import lombok.Getter;
import lombok.Setter;

public class GetterSetterTutorial {

    @Getter
    @Setter
    private String value;

    public static void main(String[] args) {
        GetterSetterTutorial tutorial = new GetterSetterTutorial();

        tutorial.setValue("Hello @Getter, @Setter");
        System.out.println(tutorial.getValue());
    }

}

実行結果:

Hello @Getter, @Setter

アクセス制御 AccessLevel

アクセス修飾子を指定することもできる。

package com.devkuma.tutorial.lombok;

import lombok.AccessLevel;
import lombok.Getter;

public class GetterAccessLevelTutorial {
    @Getter(AccessLevel.PRIVATE)
    private String value;
}
  • valueAccessLevelを渡すことで、アクセス修飾子を指定できる。

上のコードは次のように変換される。

package com.devkuma.tutorial.lombok;

public class GetterAccessLevelTutorial {
    private String value;

    public GetterAccessLevelTutorial() {
    }

    private String getValue() {
        return this.value;
    }
}
  • valueのgetterメソッドであるgetValue()privateとして指定されていることが分かる。

@Getter(lazy=true)

package com.devkuma.tutorial.lombok;

import lombok.Getter;

public class GetterLazyTutorial {
    public static void main(String[] args) {
        GetterLazyTutorial tutorial = new GetterLazyTutorial();
        System.out.println("Main instance is created");
        tutorial.getLazy();
    }

    @Getter
    private final String notLazy = createValue("not lazy");

    @Getter(lazy=true)
    private final String lazy = createValue("lazy");

    private String createValue(String name) {
        System.out.println("createValue(" + name + ")");
        return null;
    }
}

実行結果:

createValue(not lazy)
Main instance is created
createValue(lazy)

@Getterlazytrueに設定すると、値を初期化するgetterメソッドが最初に呼び出されるまで初期化を遅延できる。