[Java] 어노테이션

Local Gaji·2023년 8월 30일

이것이 자바다

목록 보기
13/18

🎈 어노테이션이란?

클래스나 인터페이스를 어떻게 처리해야할지 알려주는 정보

1. 컴파일 시 사용하는 정보 전달
2. 빌드툴이 코드를 자동으로 생성할때 사용하는 정보 전달
3. 특정 기능을 처리할때 사용하는 정보 전달

어노테이션은 하나의 타입이며 정의가 필요하다

/* 정의 */
public @interface AnnotationName {
  ...
}

/* 사용 */
@AnnotationName
...

🎈 어노테이션 속성

어노테이션은 property 값을 받을 수 있다.

/* 정의 */
public @interface AnnotationName1 {
  int prop1();
  int prop2() default 1;  // 기본값 지정
}

public @interface AnnotationNate2 {
  int value();            // 기본 속성
}


/* 사용 */
@AnnotationName1(prop1=1, prop2=3);
...

@AnnotationName2(3);
...

🎈 적용 대상 타입

어노테이션을 정의할 때, @Target 어노테이션을 적용하면 해당 어노테이션의 적용 대상 타입이 설정된다

/* 정의 */

@Target( { ElementType.TYPE, ElementType.FIELD, ... } )
public @interface AnnotationName { ... }
TYPE : 클래스, 인터페이스, 열거 타입
FIELD : 필드
CONSTRUCTOR : 생성자
METHOD : 메서드
PACKAGE : 패키지
LOCAL_VARIABLE : 로컬 변수
ANNOTATION_TYPE : 어노테이션

🎈 유지 시점

@Rentention 어노테이션을 적용하면 해당 어노테이션의 유지 수명이 설정된다

/* 정의 */
@Rentention( RententionPolicy.RUNTIME )
public @interface AnnotationName { ... }
SOURCE : 컴파일 시 적용 ~ 컴파일 후 제거
CLASS : 메모리에 로딩 시 적용 ~ 로딩 완료 후 제거
RUNTIME : 실행 시 적용 ~ 

🎈 어노테이션 정보 이용

0개의 댓글