-
Java - 애노테이션(annotation)Java/java study 2022. 3. 6. 20:37반응형
애노테이션이란?
- 개발자들은 소스코드에 대한 문서를 따로 만들기 보다 소스코드와 문서를
하나의 파일로 관리하는 것이 낫다고 판단했다. - 그래서 소스코드의 주석 /** ~~ */에 소스코드에 대한 정보를 저장하고, 소스코드의
주석으로부터 HTML문서를 생성해내는 javadoc.exe라는 프로그램을 만들어서 사용했다. - 위와 같이 소스코드 안에 다른 프로그램(ex: javadoc.exe)을 위한 정보를
미리 약속된 형식으로 포함시킨 것이 바로 애노테이션이다 - 애노테이션은 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 정보를 제공 한다.
ex) @Test 애노테이션 같은 경우 테스트 프로그램인 JUnit에게 테스트를 해야한다고
알리기만 할 뿐 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치지 않는다. - JDK에서 기본적으로 제공하는 어노테이션이 아닌 JUnit과 같은 다른 프로그램에서
제공하는 약속된 형식으로 해당 정보를 애노테이션으로 제공하기만 하면 된다.
메타 애노테이션
- 애노테이션을 위한 애노테이션
- 애노테이션을 정의할 때 애노테이션의 적용대상(target), 유지기간(retention)등을 지정
@Target
- 적용가능한 대상을 지정하는데 사용
대상 타입 적용 대상 ANNOTATION_TYPE 애노테이션 CONTRUCTOR 생성자 FIELD 필드 LOCAL_VARIABLE 지역변수 METHOD 메서드 PACKAGE 패키지 PARAMETER 매개변수 TYPE 타입 TYPE_PARAMETER 타입 매개변수 TYPE_USE 타입이 사용되는 모든 곳 @Retention
- 애노테이션의 유지시간을 지정
유지정책 의미 SOURCE 소스 파일에만 존재. 클래스 파일에는 존재하지 않음 CLASS 클래스 파일에 존재, 실행 시에는 사용불가, 기본값 RUNTIME 클래스 파일에 존재, 실행 시에 사용 가능 @Documented
- 애노테이션에 대한 정보가 javadoc으로 작성한 문서에 포함되도록 한다.
- 자바에서 제공하는 기본 애노테이션 중 @Override, @SuppressWarnings를 제외하고는
모두 이 메타 애노테이션이 붙어 있다.
반응형'Java > java study' 카테고리의 다른 글
Java - 제네릭(Generics) (0) 2022.04.03 Java - Input과 Output(I/O) (0) 2022.03.27 Java - enum이란 (0) 2022.02.27 Java - Thread (0) 2022.02.20 Java - 예외 처리 (0) 2022.02.13 - 개발자들은 소스코드에 대한 문서를 따로 만들기 보다 소스코드와 문서를