getter/setter는 명시적으로 AccessLevel을 지정하지 않는이상 기본적으로 public으로 제공이 된다.
AccessLevel은 PUBLIC, PROTECTED, PACKAGE, PRIVATE가 있다
또한 필드에도 선언할 수 있지만 Class에도 @Getter/@Setter를 선언할 수 있다. 이러한 방식은 인스턴스 필드 전체에 어노테이션을 붙이는것이다.
AccessLevel.NONE으로 설정하면 getter/setter를 수정적으로 비활성화 할 수 있다. 이를 통하여 클래스의 @Getter @Setter 어노테이션을 재정의 할 수 있다.
선언한 어노테이션에 method를 추가하기 위해서는 onMethod=@__({@AnnotationsHere})와 같이 선언해야 한다.
선언한 setter메소드는 유일하게 method매개변수에 onParam=@__({@AnnotationsHere})와 같이 어노테이션을 추가할 수 있다. 하지만 주의 해야할 것은 이 기능은 실험적이다. 자세한 내용은 https://projectlombok.org/features/experimental/onX를 참조 한다.
JDK와 함께 패키지로 제공되는 도구 이다. JDK가 설치되어 있으면 JAVADOC을 사용할 수 있으며 JAVA소스코드의 문서를 생성하는데 도와주는 일종의 도구이다.https://docs.oracle.com/javase/8/docs/api/ 는 JAVADOC으로 생성된 html 문서이다.
javadoc은 html을 따로 작성하지 않아도 소스코드에 작성된 코멘트에 따라 문서를 만들 수 있다.
lombok v1.12.0버전에서는 필드에 작성된 javadoc주석이 생성된 getter setter메소드에도 자동적으로 javadoc주석을 생성해주며 @return은 getter로 복제되는것이고 @Param은 setter메소드에 주석 내용이 복제된다. @Return주석은 필드의 javadoc 주석에서 삭제되고 getter메서드로 주석이 이동됨을 의미한다.
즉 @Param @return 어노테이션을 필드에 지정하면 롬복에 의해 생성된 getter/setter메소드에 대해 설명을 개별적으로 지정할 수 있다.
GETTER / SETTER라는 이름의 색션을 생성하여 그 안에 getter setter에 대한 설명을 정의할 수 있다. 이것은 롬복에서 지원하는 기능이며 getter setter를 생성할 때, 각 메소드의 javadoc주석에 고유한 설명을 추가하고자 사용한다. 이를 위해 '@section' 어노테이션을 사용하여 GETTER 및 SETTER 섹션을 정의하고, 각 섹션에 원하는 설명을 추가할 수 있다.
다음 예제에서 javadoc주석을 확인할 수 있다.
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
public class GetterSetterExample {
/**
* Age of the person. Water is wet.
*
* @param age New value for this person's age. Sky is blue.
* @return The current value of this person's age. Circles are round.
*/
@Getter @Setter private int age = 10;
/**
* Name of the person.
* -- SETTER --
* Changes the name of this person.
*
* @param name The new value.
*/
@Setter(AccessLevel.PROTECTED) private String name;
@Override public String toString() {
return String.format("%s (age: %d)", name, age);
}
}
public class GetterSetterExample {
/**
* Age of the person. Water is wet.
*/
private int age = 10;
/**
* Name of the person.
*/
private String name;
@Override public String toString() {
return String.format("%s (age: %d)", name, age);
}
/**
* Age of the person. Water is wet.
*
* @return The current value of this person's age. Circles are round.
*/
public int getAge() {
return age;
}
/**
* Age of the person. Water is wet.
*
* @param age New value for this person's age. Sky is blue.
*/
public void setAge(int age) {
this.age = age;
}
/**
* Changes the name of this person.
*
* @param name The new value.
*/
protected void setName(String name) {
this.name = name;
}
}