ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 애노테이션(annotation)
    Java/java study 2022. 3. 6. 20:37
    728x90
    반응형

     

     

     

     

    애노테이션이란?

     

     

    • 개발자들은 소스코드에 대한 문서를 따로 만들기 보다 소스코드와 문서를
      하나의 파일로 관리하는 것이 낫다고 판단했다.
    • 그래서 소스코드의 주석 /** ~~ */에 소스코드에 대한 정보를 저장하고, 소스코드의
      주석으로부터 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를 제외하고는
      모두 이 메타 애노테이션이 붙어 있다.

     

     

     

     

     

    728x90
    반응형

    '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

    댓글

Designed by Tistory.