본문

170427(목) - Repeating Annotations

Repeating Annotations


standard annotation을 사용하는 곳이면 어디서나 annotation을 반복 가능하다.

@Schedule(dayOfMonth="last")
@Schedule(dayOfWeek="Fri", hour="23")
public void doPeriodicCleanup() { ... }
@Alert(role="Manager")
@Alert(role="Administrator")
public class UnauthorizedAccessException extends SecurityException { ... }


repeating annotation은 container annotation에 저장된다.

compiler를 실행하려면 코드에 두 가지의 추가적인 declaration이 필요


1. Declare a Repeatable Annotation type

주석 유형은 @repeatable meta-annotation에 지정 해줘야 한다.

import java.lang.annotation.Repeatable;

@Repeatable(Schedules.class)
public @interface Schedule {
  String dayOfMonth() default "first";
  String dayOfWeek() default "Mon";
  int hour() default 12;
}


2. Declare the Containing Annotation type

containing annotation은 배열형의 value 요소를 가져야 한다.


public @interface Schedules {
    Schedule[] value();
}


공유

댓글