2015-04-03 179 views
0

我不認爲這是可能的,但我想拋出這個問題,以防萬一我失去了一些東西。 我有一個註釋:Java註釋屬性限制

@Target({ElementType.TYPE,ElementType.METHOD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Auditable { 
    enum When{COMPLETE,ENTERING}; 
    /** 
    * The list of attributes in this class to be audited 
    * This is used at target level 'Type' only 
    * 
    * @return 
    */ 
    String[] attributes() default {}; 

    /** 
    * enum to dictate when to audit this message 
    * This is used at target level 'method' only 
    * 
    * @return 
    */ 
    When when() default When.ENTERING; 
} 

我想是添加註釋,以限制對目標的屬性到類型或方法的一種方式。

例如屬性「時,」從上面被限制的方法:

/** 
    * enum to dictate when to audit this message 
    * This is used at target level 'method' only 
    * 
    * @return 
    */ 
    @Target({ElementType.METHOD}) 
    When when() default When.ENTERING; 

再次我不相信這是可能的,但它會是不錯的。

回答

2

不,在編譯時沒有辦法限制註釋的屬性只能用於註釋目標。處理註釋時,您總是可以在運行時拋出異常。

否則,您將不得不定義和使用不同的註釋類型。

+0

我很確定那是我想要的驗證。目前我只是忽略了不適用於目標級別的屬性。 – peekay 2015-04-03 17:21:31