2010-07-01 85 views
3

是否可以将批注限制在列表中? 所以我们可以说我有两个注解:只允许批注进入列表

(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添加到列表将导致编译错误,因为他的土地爱的方式。

回答

6

我不知道我理解正确的问题,但我猜你需要这样的:

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

关于第二部分:我想没有,因为注解接口不能相互延伸。

+0

谢谢,经过一番更多的游戏后,我发现问题的第一部分的一些解决方案。是的,我不认为第二部分是可能的,因为接口不允许子分类。感谢您的回应! – digiarnie 2010-07-01 23:23:48