Раньше я объявить обертка аннотацию вручную, с массивом, а затем вызвать его следующим образом:Порядок автоматически обернутый @Repeatable аннотациями
@Foos({ @Foo(0), @Foo(1), @Foo(2) })
public void bar() {}
Так как я делал массив с { ... }
инициализаторах , было более чем ясно, что приказ должен быть тем же самым из декларации, когда я обратился к этому методу позже через Reflection.
Однако, когда я использую новую аннотацию @Repeatable
от Java 8, у меня есть гарантия, что заказ будет сохранен?
Я объявил простой набор аннотаций:
public @interface Foos {
Foo[] value();
}
@Repeatable(Foos.class)
public @interface Foo {
int value();
}
и запустить несколько тестов с самыми разнообразными сценариями:
@Foo(0) @Foo(1) @Foo(2)
public void bar1() {}
@Foo(2)
@Deprecated @Foo(5)
@Foo(10)
public void bar2() {}
и все, кажется, работает без сбоев (при доступе с помощью Reflection), но Я не хотел бы полагаться на недокументированные материалы. Мне кажется очевидным, что так должно быть, но я не могу найти его нигде! Может ли кто-нибудь пролить свет на это?
Спасибо! Теперь я чувствую себя в безопасности, используя это :) –