코드에 메타데이터를 추가할 수 있는 기능을 제공하며 주로 코드에 특별한 의미를 부여하거나 컴파일러와 런타임에 특정 동작을 트리거하기 위해 사용됨
(주석은 사람에게 정보를 제공한다면 어노테이션은 특정 코드를 사용하는 프로그램에게 정보를 전달
하는 것)
어노테이션은 @
기호로 시작하고 클래스, 메서드, 변수, 매개변수, 패키지 등에 추가할 수 있음
@Override
메서드가 상위 클래스나 인터페이스의 메서드를 오버라이드하고 있음을 나타냄
이 때 컴파일러는 메서드가 실제로 오버라이드하고 있는지 확인함
@Deprecated
해당 요소가 더 이상 사용되지 않음을 나타냄
해당 어노테이션이 붙은 코드를 사용하면 컴파일 경고가 발생함
@SuperessWarnings
컴파일러 경고를 억제함
사용되지 않는 변수에 대한 경고를 무시할 수 있음
보일러 플레이트 코드를 줄여주는 라이브러리로 자동으로 보일러 플레이트 코드를 생성해 코드의 가독성과 유지보수성을 높여줌. Lombok은 어노테이션 기반으로 동작하며 주로 컴파일 시점에 소스 코드를 변환하여 필요한 메서드를 자동으로 생성함
getter/setter 메서드, 생성자, toString 메서드 등과 같이 반복적으로 작성되는 코드를 뜻함