애너테이션(Annotation)

박진선·2022년 11월 16일
0

오늘은 애너테이션의 개념에 대해 배운 내용을 정리해보려 한다.

애너테이션 이란?

  • 사전적 의미로 주석 이라는 뜻을 가지고 있고 클래스 레벨, 메소드 레벨, 또는 필드에 선언하여 사용 할 수 있는 메타 데이터의 일종이다. @ 기호를 앞에 붙여서 사용하며 JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한다.

애너테이션의 용도

  • 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.
  • 프로그램을 빌드할 때 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
  • 런타임 시 특정 기능을 실행하도록 정보를 제공한다.

애너테이션의 종류

  • 애너테이션은 크게 두 가지 종류가 있다 자바에서 기본적으로 제공하는 표준 애너테이션과 애너테이션을 정의하는데 사용되는 애너테이션의 애너테이션인 메타 애너테이션이 있다.

우선 메타 에너테이션 종류에 대해 알아보자

@Target

  • 어노테이션을 적용할 대상을 지정하는데 사용한다.
    어노테이션의 옵션은 java.lang.annotation.ElementType 에 정의되어 있다.
@Target(ElementType.ANNOTATION_TYPE)어노테이션
@Target(ElementType.CONSTRUCTOR)생성자
@Target(ElementType.FIELD)필드(멤버 변수, Enum 상수)
@Target(ElementType.LOCAL_VARIABLE)지역변수
@Target(ElementType.METHOD)메서드
@Target(ElementType.PACKAGE)패키지
@Target(ElementType.PARAMETER)매개변수(파라미터)
@Target(ElementType.TYPE)타입(클래스, 인터페이스, Enum)
@Target(ElementType.TYPE_PARAMETER)타입 매개변수(제네릭과 같은 매개변수)
@Target(ElementType.TYPE_USE)타입이 사용되는 모든 대상

@Retention

  • 특정 어노테이션의 지속 시간을 결정하는 데 사용한다.
  • 어노테이션에는 세 가지의 지속 시간을 규정할 수 있다. 이를 유지 정책(RetentionPolicy)이라 한다.
@Retention(RetentionPolicy.SOURCE)자바 소스 파일에 존재하는 것으로 컴파일 이후 클래스 파일이 되면 사라짐
@Retention(RetentionPolicy.CLASS).class 파일에 존재하지만 런타임에는 사라짐(기본값)
@Retention(RetentionPolicy.RUNTIME)런타임 까지도 존재한다

@Inherited

  • 부모 클래스에 선언하면 하위 클래스도 어노테이션을 상속받도록 한다. 즉 @Inherited 어노테이션을 상위 클래스에 붙이면, 하위 클래스도 상위 클래스에 붙은 어노테이션이 동일하게 적용된다.

@Documented

  • 어노테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 하는 어노테이션 설정이다.
    javadoc는 자바에서 지정한 형태의 주석들을 인식하여 html을 통해 api 문서 형태로 만들어주는 도구이다

@Repeatable

  • 애너테이션을 반복해서 적용할 수 있게 한다.

다음 표준 애너테이션 종류에 대해 알아보자

표준 애너테이션

@Override : 컴파일러에게 메서드를 오버라이딩하는 것이라고 알림
@Deprecated : 앞으로 사용하지 않을 대상을 알릴 때 사용
@FunctionalInterface : 함수형 인터페이스라는 것을 알림
@SuppressWarning : 컴파일러가 경고메세지를 나타내지 않음

profile
주니어 개발자 입니다

0개의 댓글