어노테이션을 사용하는 이유 (효과) 는 무엇일까?
나만의 어노테이션은 어떻게 만들 수 있을까?
내가 내린 정의는프로그램에게 특정한 기능을 담당한다고 명시해주는 것
이다.
또한 Annotation 즉 주석이라는 뜻처럼 코드를 직관적이고 설명하기 좋게 만든다.
찾아보니 어노테이션이란 컴파일/배포/런타임에 코드에 추가 정보를 제공하는 방법이라고 한다. 실행흐름을 변경하거나 코드 간결성 등 다양한 기능을 묶어주는 데 사용할 수 있다.
어노테이션은 마커만, 싱글값만, 멀티값 등 사용할 수 있다.
// 마커 어노테이션 (Maker Annotation)
@NewAnnotation
// 싱글 값 어노테이션 (Single Value Annotation)
@NewAnnotation(id=10)
// 멀티 값 어노테이션 (Multi Value Annotation)
@NewAnnotation(id=10, name=“hello”, roles= {“admin”, “user"})
Custom Annotation을 만들기 위해 어노테이션이 필요하다?...
간단한 어노테이션 예시를 가져왔는데, 여기서 어떤 어노테이션이 쓰였는지 알아보자
| 출처: https://advenoh.tistory.com/21
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
String name();
String value();
}
@MyAnnotation(name = "someName", value = "Hello World")
public class TheClass {
}
먼저 @interface로 어노테이션임을 명시한다.
@Target으로 적용할 타겟을 지정하고
@Retention으로 유지기간(클래스, 메소드, 필드)를 지정한다.
이 어노테이션은 선언한 어노테이션이 적용될 수 있는 위치를 결정한다
@Target(ElementType.TYPE)
ElementType Enum에 선언된 값
@Retention(RetentionPolicy.RUNTIME)
어노테이션이 어느레벨까지 유지되는지를 결정짓는다.
RetentionPolicy Enum에 선언된 값
이 어노테이션을 선언하면 자식클래스가 어노테이션을 상속 받는다
이 어노테이션을 선언하면 새로 생성한 어노테이션이 자바 문서 생성시 자바 문서에도 포함시키는 어노테이션이다.
자바8에 추가된 어노테이션으로 반복 선언을 할 수 있게 해준다.