只允许将注释添加到列表中。

3

有没有可能仅将注释限制在列表中?

假设我有两个注释:

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

当声明一个List时,我只想允许包含注解,其他任何东西都会导致编译错误:

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

我不确定我是否正确理解了你的问题,但我猜想你需要这个:

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

关于第二部分:我认为不行,因为注解接口不能互相扩展。

谢谢,经过更多的尝试,我找到了第一个问题的一些解决方案。是的,由于接口不允许子类型化,我也认为第二部分不可能实现。感谢您的回复! - digiarnie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接