본문 바로가기
🗂 Study/자바

[Java] @어노테이션 (Annotation)

by 뿌맘 2021. 7. 8.
반응형

어노테이션(Annotation)

어노테이션은 코드 사이에 주석처럼 쓰이면서 특별한 의미·기능을 수행하도록 하는 기술로, 프로그램에게 추가적인 정보를 제공해주는 메타 데이터입니다.

메타데이터(metadata)란?
데이터의 대한 속성정보. 데이터의 대한 데이터로서 하위 레벨 데이터를 설명 및 기술하는 데이터.

 

어노테이션의 용도

  • 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.
  • 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
  • 런타임 시 특정 기능을 실행하도록 정보를 제공한다.

어노테이션을 적용할 때는 어노테이션이 어디에 적용되며 언제까지 어노테이션 소스가 유지될 것인지를 설정해야 하는데 소스코드에는 다음과 같이 어노테이션을 정의해주면 됩니다.

 

어노테이션 정의하기

@Target({ElementType.[적용대상]}) 
@Retention(RetentionPolicy.[정보유지되는 대상]) 
public @interface [어노테이션 이름]{ 
	... 
}

 

어노테이션 파일을 정의할 때는 총 3가지가 필요합니다.

  1. Target (어노테이션의 적용 대상)
  2. Retention (어노테이션이 유지되는 대상)
  3. Annotation Name (class가 아닌 @interface로 정의된 어노테이션 이름)

1. @Target

Target에는 어떠한 값에 어노테이션을 적용할 것인지 나타낼 수 있습니다.

@Target에 들어가는 ElementType의 Enum값

더보기
ANNOTATIOIN_TYPE 어노테이션 선언
CONSTRUCTOR 생성자 선언
FIELD 필드 선언(열거 형 상수 포함)
LOCAL_VARIABLE 지역 변수 선언
METHOD 메서드 선언
PACKAGE 패키지 선언
PARAMETER public parameter
TYPE 클래스, 인터페이스 (주석 유형 포함) 또는 열거 형 선언
TYPE_PARAMETER Type 파라미터 선언 (Java 8에 추가)
TYPE_USE Type이 사용되는 곳 (Java 8에 추가)

 

2. @Retention

Retention에는 어노테이션 값들을 언제까지 유지할 것인지 값을 입력합니다. 보통 어노테이션은 Runtime시에 많이 사용하기 때문에 대부분 어노테이션의 Retention 값은 Runtime으로 되어있습니다.

@Retention에 들어가는 ElementType의 Enum값

더보기
CLASS 컴파일러에 의해 클래스 파일에 기록되지만 런타임에는 유지되지 않음
RUNTIME 컴파일러에 의해 클래스 파일에 기록되고 런타임에 유지
SOURCE 소스에만 반영되어 컴파일러에 의해 삭제

 

 

참고

반응형

댓글