2010-07-01 79 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