#вопросы_с_собеседований

Что такое повторяющиеся аннотации?



Это аннотации, которые можно применять более одного раза к одному и тому же объявлению элемента. По соображениям совместимости, поскольку эта фича была представлена в Java 8, повторяющиеся аннотации хранятся в контейнере, который автоматически создается компилятором Java. Для всего этого необходимо объявлять их в два этапа. Во-первых, нужно объявить повторяемую аннотацию:



@Repeatable(Schedules.class)

public @interface Schedule {

String time() default "morning";

}



Затем определить содержащую аннотацию с обязательным элементом value, тип которого должен быть массивом повторяемого типа аннотации:



public @interface Schedules {

Schedule[] value();

}



Теперь мы можем использовать @Schedule несколько раз:



@Schedule

@Schedule(time = "afternoon")

@Schedule(time = "night")

void scheduledMethod() {

// ...

}