@ Annotation (어노테이션)

Lee Gayoung·2023년 1월 23일
0

🌟Annotation 이란?

어노테이션은 프로그램이 처리 할 메인 데이터가 아닌, 실행과정에서 데이터를 어떻게 처리할것인지 알려주는 서브 데이터라고 볼 수 있다. 사전적 정의인 '주석'에 알맞는 역할을 한다.

✅ Annotation의 용도

  1. 컴파일러가 코드 작성의 문법 오류를 검사하도록 정보를 제공
  2. 개발툴이 코드를 자동 생성하기 위한 정보를 제공
  3. 실행(런타임)에서 특정 기능을 하도록 정보를 제공

✅ Annotation의 종류

- Built-in Annotaion

Java에서 기본적으로 제공하는 주요 Annotation이다.

  1. @ Override
    선언한 메서드가 오버라이딩 되었음을 의미한다. 오버라이딩된 메서드의 이름이 올바른지 등을 체크한다.

  2. @ Deprecated
    사용이 권장되지 않는 필드나 메서드에 붙인다. 만약 사용할 경우 컴파일 경고를 발생시킨다. 메소드의 사용에서 "getDate()"처럼 표시된다면 해당 메소드 상위에 @Deprecated 어노테이션이 붙어있기 때문이다. 해당 메소드를 사용한 이전 프로젝트들의 하위 호환성을 위해 메소드를 유지하되 권장하지 않는다.

  3. @ SuppressWarnings
    선언된 영역에 대해 컴파일러의 경고를 무시하도록 한다. (표시 X)

  4. @ SafeVarargs
    Java7 부터 지원하며 제너릭 같은 가변인자의 매개변수를 사용할 때의 경고를 무시합니다. 즉, 개발자가 직접 안전하다는 표시를 제공함으로써 컴파일러 경고를 무시하게 한다.

  5. @ FunctionalInterface
    Java8 부터 지원하며 함수형 인터페이스를 지정하는 어노테이션이다. 함수형 인터페이스임을 표시하는 역할과 올바르게 작성했는지를 컴파일러가 확인할 수 있도록 한다.

- Meta Annotation

다른 Annotation에서 사용되는 Annotation이며 Custom-Annotation 을 생성할 때 주로 사용된다.

  1. @ Retention
    컴파일러가 Annotation을 다루는 방법에 대해 기술하며, 어느 특정 시점까지 Annotation이 유지될 것인지를 결정한다.

  2. @ Target
    Annotation의 정의에서 적용 대상을 지정하는데 사용한다.

  3. @ Inherited
    Annotation의 상속이 가능하도록 한다. 자손 클래스에 상속하고자 할 때 @ Inherited를 붙인다.

  4. @ Repeatable
    Java8 부터 지원하며 반복해서 붙일 수 있는 Annotation을 정의할 때 사용한다.

  5. @ Documented
    해당 Annotation을 Javadoc에 포함시킨다. Annotation의 사용을 문서화 한다.

사용 가능한 목록

  • 클래스
  • 어노테이션 클래스
  • 프로퍼티 ( 멤버변수 )
  • 필드 ( 프로퍼티의 백킹 필드 포함 )
  • 지역변수
  • 값 파라미터
  • 생성자
  • 함수
  • 게터 (Getter)
  • 세터 (Setter)
  • 표현식 (Expression)

📎참고자료

  1. [kotlin] 코틀린 차곡차곡
  2. [Java] 어노테이션이 뭔데??
  3. [Java] Annotation 어노테이션 - 총정리

0개의 댓글