2015-04-03 114 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