2015-05-23 78 views
0

有什麼方法可以驗證Java中的註釋有效性嗎?Java中的註釋(參數)驗證?

例如,我可以有一個註釋

public @interface Foo { 
    int number(); 
    String name(); 
} 

public @interface Foos { 
    Foo[] value(); 
    /* Foos() { 
     for(int i=0; i<value().length; ++i) { 
      if(i != value()[i].number()) { 
       throw new IllegalArgumentException(); 
      } 
     } 
    } */ 
} 

我能約束numbers是從零開始,不斷去?

(例如上面我寫的註釋註釋構造此項檢查)

UPDATE

註釋使用的一些樣本:

// correctly annotated class 
@Foos({@Foo(number=0, name="first"), @Foo(number=1,name="second")}) 
class MyCorrectAnnotatedClass { 
} 

// incorrectly annotated class 1 
// number starts from 1 not form 0 
@Foos({@Foo(number=1, name="first"), @Foo(number=2,name="second")}) 
class MyIncorrectAnnotatedClass1 { 
} 

// incorrectly annotated class 2 
// number sequence has missed 1 
@Foos({@Foo(number=0, name="first"), @Foo(number=2,name="second")}) 
class MyIncorrectAnnotatedClass2 { 
} 

回答

0

你的意思是要檢查所有使用註釋的地方,以便每個數字從0開始使用一次?這是不可能的,以一種簡單的方式。

如果你真的想這樣做,你必須編寫代碼來掃描類路徑中的所有類,找到所有使用註釋的類,然後檢查註釋的值。 (如果註解用於方法或其他類而不是類,則更加困難)。

您不能將實現代碼(如構造函數)添加到註釋中。這樣一來,註釋與界面相似。

+0

雖然我的意思是你認爲不同的事情,但從你的回答來看,可能是因爲答案是「不可能的」。請參閱我的更新:我的意思是檢查每個單一用法的註釋完整性,而不是所有用法。由於註釋設計爲獨立實體,後者的願望將是非法的。 –