Разрешить только аннотации в список - PullRequest
3 голосов
/ 02 июля 2010

Можно ли ограничить только аннотации в списке?Допустим, у меня есть две аннотации:

(1) Foo.class
(2) Bar.class

При объявлении списка я хочу только разрешить включение аннотаций, но все остальное приведет к ошибке компиляции:

List<Something> list = new ArrayList<Something>();
list.add(Foo.class);
list.add(Bar.class);
list.add(String.class); // bad

Если вышеупомянутое даже возможно, тогда возможно ли ограничить его типами аннотаций?Я имею в виду только те аннотации, которые каким-то образом сгруппированы.Например, если у меня есть следующие аннотации:

(1) Shark.class
(2) GoldFish.class
(3) Lion.class

И я хочу разрешить только аннотации, которые живут в воде.Поэтому добавление Lion.class в Список приведет к ошибке компиляции из-за его любящих землю способов.

1 Ответ

6 голосов
/ 02 июля 2010

Я не уверен, что правильно понял ваш вопрос, но, думаю, вам нужно это:

List <Class <? extends Annotation>>  x
    = new ArrayList <Class <? extends Annotation>> ();

Что касается второй части: думаю, нет, потому что интерфейсы аннотаций не могут расширять друг друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...