언어(Language)/Java
[Java] 자바 사용자 정의 어노테이션(Custom Annotation) 개념 정리 및 활용
잇트루
2022. 9. 24. 02:00
반응형
사용자 정의 어노테이션 (Custom Annotation)
사용자가 직접 정의하여 사용하는 어노테이션이다. 프레임워크나 API 등을 만들어 사용할 때 주로 사용한다.
사용자 정의 어노테이션 정의
사용자 정의 어노테이션을 사용하기 위해 @interface를 통해 어노테이션 클래스를 작성할 수 있다.
어노테이션은 내부에 값을 가질 수 있으며, 값을 설정할 수 있다. 값을 설정하기 위해서는 default 값 형태로 설정한다.
import java.lang.annotation.*;
// 메타 어노테이션을 활용하여 사용자 정의 어노테이션 선언
@Target(ElementType.TYPE) // 어노테이션 적용 대상 Type으로 설정
@Retention(RetentionPolicy.RUNTIME) // 런타임 시까지 어노테이션을 사용
public @interface CustomAnnotation {
int age() default 20; // default로 20 설정
String name();
}
사용자 정의 어노테이션 사용
import java.lang.annotation.*;
// 어노테이션 값을 사용하기 위한 클래스 생성
@CustomAnnotation(name = "홍길동") // 사용과 동시에 값 설정 가능
class MyInfo {
}
public class PrintMyInfo {
public static void main(String[] args) {
PrintMyInfo myInfo = new PrintMyInfo();
myInfo.print(new MyInfo());
}
void print(MyInfo myInfo) {
Annotation[] annotations = MyInfo.class.getDeclaredAnnotations();
for(Annotation i : annotations) {
if (i instanceof CustomAnnotation) {
CustomAnnotation customAnnotation = (CustomAnnotation) i;
System.out.println(customAnnotation.name() + " " + customAnnotation.age());
}
}
}
}
// 출력
홍길동 20
사용자 정의 어노테이션을 선언할 때 메타 어노테이션을 함께 사용할 수 있다.
@Target
어노테이션을 정의할 때 적용 대상을 지정하는 데 사용한다.
@Documented
어노테이션 정보를 javadoc으로 작성된 문서에 포함시킨다.
@Inherited
어노테이션이 하위 클래스에 상속되도록 한다.
@Retention
어노테이션이 유지되는 기간을 정하기 위해 사용한다.
@Repeatable
어노테이션을 반복해서 적용할 수 있도록 한다.
반응형