반응형
어노테이션(Annotation)
어노테이션은 코드 사이에 주석처럼 쓰이면서 특별한 의미·기능을 수행하도록 하는 기술로, 프로그램에게 추가적인 정보를 제공해주는 메타 데이터입니다.
메타데이터(metadata)란?
데이터의 대한 속성정보. 데이터의 대한 데이터로서 하위 레벨 데이터를 설명 및 기술하는 데이터.
어노테이션의 용도
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.
- 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
- 런타임 시 특정 기능을 실행하도록 정보를 제공한다.
어노테이션을 적용할 때는 어노테이션이 어디에 적용되며 언제까지 어노테이션 소스가 유지될 것인지를 설정해야 하는데 소스코드에는 다음과 같이 어노테이션을 정의해주면 됩니다.
어노테이션 정의하기
@Target({ElementType.[적용대상]})
@Retention(RetentionPolicy.[정보유지되는 대상])
public @interface [어노테이션 이름]{
...
}
어노테이션 파일을 정의할 때는 총 3가지가 필요합니다.
- Target (어노테이션의 적용 대상)
- Retention (어노테이션이 유지되는 대상)
- 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 | 소스에만 반영되어 컴파일러에 의해 삭제 |
참고
반응형
'🗂 Study > 자바' 카테고리의 다른 글
[Java] 정적(Static)이란 무엇일까? (0) | 2021.08.04 |
---|---|
[Java] 클래스(Class)와 객체(Object) (0) | 2021.07.30 |
[Java] 추상 클래스와 인터페이스의 차이점 (0) | 2021.07.23 |
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2021.07.14 |
[Java] JVM의 구조와 Java의 실행방식 (0) | 2021.06.15 |
댓글