Мой опыт:
Две или более аннотации одного типа не допускаются. Однако вы можете сделать что-то вроде этого:
public @interface Foos {
Foo[] value();
}
@Foos({@Foo(bar="one"), @Foo(bar="two")})
public void haha() {}
Тем не менее, вам понадобится специальная обработка аннотации Foos в коде.
Кстати, я только что использовал это 2 часа назад для решения той же проблемы :)
Как сказал sfussenegger, это невозможно.
Обычное решение - построить "множественную" аннотацию , которая обрабатывает массив предыдущей аннотации . Обычно он называется так же, с суффиксом 's'.
Между прочим, он очень часто используется в больших публичных проектах (например, Hibernate), поэтому его не следует рассматривать как взлом, а скорее как правильный решение этой проблемы.
В зависимости от ваших потребностей, может быть лучше разрешить вашей более ранней аннотации обрабатывать несколько значений .
Пример:
public @interface Foo {
String[] bars();
}