애너테이션

김소희·2023년 3월 8일
1

애너테이션(Annotation)은 소스 코드의 설정 정보를 컴파일러나 junit과 같은 프로그램에게 제공하는 역할을 한다.
java.lang.annotation 인터페이스를 상속받기 때문에 다른 클래스나 인터페이스를 상속 받을 수 없다.
자바에서 제공하는 애너테이션은 표준애너테이션과 메타애너테이션이 있다.

<표준 애너테이션>

이름역할
@Override오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.
ex ) 개발자가 메소드 이름을 오타내는 실수를 했을때 확인해준다.
@Deprecated앞으로 사용되지 않을 것을 권장하는 필드나 메서드에 붙인다.
ex ) 새로운 기술로 대체 되었지만 하위 호환성을 위해 남겨두었을 경우에 쓰임.
@FunctionalInterface함수형 인터페이스의 선언이 바르게 선언되었는지 컴파일러가 확인한다.
ex ) 함수형 인터페이스를 선언할 때 쓰고, 추상메소드가 1개인지 확인해준다.
@SuppressWarnings( )컴파일러의 경고메세지가 나타나지 않게 억제한다.
ex ) 경우에 따라서 경고가 발생할 것이 충분히 예상됨에도 묵인해야 할 때 주로 사용한다.

<메타 애너테이션>

애너테이션을 만들때 사용하는 애너테이션으로
애너테이션의 적용 대상 및 유지 기간을 지정하는 데에 사용된다.
java.lang.annotation패키지에 포함되어있다.

이름역할
@Target애너테이션 정의시, 적용할 “대상"을 지정하는데 사용
ex ) @Target (TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR...)
@Retention애너테이션이 유지되는 기간을 지정하는데 사용 SOURCE, RUNTIME, CLASS
ex ) @Retention(RetentionPolicy.SOURCE)
@Documentedjavadoc로 작성한 문서에 포함시킬때 사용
@Inherited애너테이션을 자손클래스에 상속하고자 할때 사용
@Repeatable반복해서 붙일 수 있는 애너테이션을 정의할때 사용

<사용자정의 애너테이션>

사용자가 직접 애너테이션을 정의해서 사용하는 것이다.
애너테이션을 정의하는 방법은 인터페이스를 정의하는 것과 비슷하다.

profile
백엔드 개발자 소희의 모험

0개의 댓글