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;
}
valueにAccessLevelを渡すことで、アクセス修飾子を指定できる。
上のコードは次のように変換される。
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)
@Getterでlazyをtrueに設定すると、値を初期化するgetterメソッドが最初に呼び出されるまで初期化を遅延できる。