오늘도 enum을 제대로 알고자 오라클 튜토리얼 열심히 한번 읽어봅니다. 

 

Annotation(어노테이션) 은 무엇인가요?

Annotations, a form of metadata, provide data about a program that is not part of the program itself. Annotations have no  direct effect on the operation of the code they annotate.

"Annotation은 프로그램의 일부가 아닌, 프로그램에 대한 정보를 제공하는 일종의 메타데이터이다. 어노테이션된 코드의 동작에는 직접적인 영향을 끼치지 않는다

 

Annotation(어노테이션) 은 왜 쓰나요?

1) 컴파일러에게 정보(에러 감지 혹은 컴파일러 경고에 대해 무시 등..)를 주기 위해 

 -> @SuppressWarnings 등

2) 컴파일 및 배포 시 코드, XML 파일 등을 생성하기 위해

 -> @Getter, @Setter 등

3) 런타임 시 검사를 수행하기 위해 

 -> ????? 코드의 동작에는 직접적인 영향을 끼치는 것이 아닌가 싶다... 

2번과 3번은 어노테이션 프로세서와 관련이 있어보이는데 스터디 후 다시 정리할 예정.

 

 

Annotation(어노테이션) 은 어떻게 정의하는지 

어노테이션은 특별한 인터페이스라하여 @ + interface로 정의한다. 

public @interface DeepDiveToAnnotation {

    // Element 정의
    String title();
    String description();

}

 

Annotation(어노테이션) 의 종류에는 무엇이 있는지 

내용이 100% 정리가 되지 않아서 일단 기본적인 부분만 정리하고 간다. 

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
@Documented // javadoc 생성을 위한 Annotation
public @interface DeepDiveToAnnotation {

    // Element 정의
    /** This is title! Using this when....  */
    String title();
    /** This is description! Using this when....  */
    String description();

}

 

@Target 어노테이션의 적용 대상을 지정하며 TYPE, FIELD, METHOD, PARAMETER 를 포함하여 다양하게 존재함.
java.lang.annotation 패키지의 ElementType enum에 정의되어 있음
@Retention 어노테이션의 정보가 어느시점까지 유지되는지 의미한다. 
종류로는 SOURCE, CLASS, RUNTIME 이 존재한다.  
@Documented javadoc 생성을 위해 사용되는 어노테이션

 

 

 

Annotation(어노테이션) Processor

추후 정리예정...

'가치코딩 [Java] > 기초문법' 카테고리의 다른 글

[Java 문법] 인터페이스  (0) 2021.03.05
[Java 문법] I/O  (0) 2021.03.04
[Java 문법] enum  (0) 2021.02.04
[Java 문법] 패키지  (1) 2021.02.03
[Java 문법] 예외처리  (0) 2021.01.21

+ Recent posts