В зависимости от причины, по которой вы хотите указать другие аннотации, существует несколько решений:
Массив экземпляров одного типа аннотации
Возможно, не то, что вы имели в виду в своем вопросе, но если вы хотите указать несколько экземпляров одного типа аннотации, это, безусловно, возможно:
public @interface Test {
SomeAnnotation[] value();
}
Массив типов аннотаций вместо экземпляров
Если вам не нужно указывать какие-либо параметры в отдельных аннотациях, вы можете просто использовать их объекты класса вместо экземпляров.
public @interface Test {
Class<? extends Annotation>[] value();
}
Но перечисление, конечно, также помогло бы в большинстве ситуаций.
Использовать несколько массивов
Если набор возможных типов аннотаций, которые вы хотите использовать, ограничен, вы можете создать отдельный параметр для каждого из них.
public @interface Test {
SomeAnnotation[] somes() default { };
ThisAnnotation[] thiss() default { };
ThatAnnotation[] thats() default { };
}
Задание значения по умолчанию для каждого члена позволяет указывать массивы только для нужных вам типов.