lombok 라이브러리를 이용하면 Getter, Setter 함수를 직접 정의하지 않고서도 해당 기능을 사용할 수 있다.
필드에 hello, lombok 멤버를 정의한 후, 해당 값에 대해 Getter, Setter 함수를 이용하고 싶으면 아래와 같은 형식을 사용하면 된다. 이때 필드명의 앞글자는 대문자로 적어줘야 한다. 리액트에서 useState 의 사용방법과 유사한 것 같다.
예시)
import lombok.Getter;
import lombok.Setter;
//useState 에 state, setState 랑 비슷한듯
@Getter
@Setter
public class HelloLombok {
private String hello;
private int lombok;
public static void main(String[] args) {
// TODO Auto-generated method stub
HelloLombok helloLombok = new HelloLombok();
helloLombok.setHello("헬로");//hello 필드의 값을 변경함
helloLombok.setLombok(777);
System.out.println(helloLombok.getHello());//hello 필드의 값을 가져옴
System.out.println(helloLombok.getLombok());//lombok 필드의 값을 가져옴
}
}
//출력
//hello
//777
필드의 속성에 final 을 적용하고 롬복의 @RequiredArgsConstructor 에너테이션을 적용하면 해당 속성을 필요로 하는 생성자가 롬복에 의해 자동으로 생성성된다. 단 final이 없는 필드의 속성은 생성자에 포함되지 않는다.
final 을 적용했기 때문에 @Setter는 사용할 수 없다는걸 기억하자. final 은 한번 설정한 값을 변경할 수 없게 하는 키워드이다.
예시)
생성자가 없어도 생성자가 자동으로 생성되어 final 속성에 대해 초기화를 해주는 모습을 볼 수 있다.
import lombok.Getter;
import lombok.Setter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Getter
//@Setter
public class HelloLombok {
private final String hello;
private final int lombok;
public static void main(String[] args) {
// TODO Auto-generated method stub
HelloLombok helloLombok = new HelloLombok("헬로", 777);
System.out.println(helloLombok.getHello());//hello 필드의 값을 가져옴
System.out.println(helloLombok.getLombok());//lombok 필드의 값을 가져옴
}
}
다음과 같이 생성자를 직접 작성한 경우와 동일함
import lombok.Getter;
import lombok.Setter;
import lombok.RequiredArgsConstructor;
//@RequiredArgsConstructor
@Getter
//@Setter
public class HelloLombok {
private final String hello;
private final int lombok;
public static void main(String[] args) {
// TODO Auto-generated method stub
HelloLombok helloLombok = new HelloLombok("헬로", 777);
System.out.println(helloLombok.getHello());//hello 필드의 값을 가져옴
System.out.println(helloLombok.getLombok());//lombok 필드의 값을 가져옴
}
}