Java注释属性限制

时间:2015-04-03 16:35:10

标签: java annotations

我不认为这是可能的,但我想把问题扔出去,以防万一我错过了什么。 我有一个注释:

@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;
}

我想要的是添加注释以将属性的Target限制为Type或Method的方法。

例如,上面的'when'属性仅限于Method:

  /**
   * 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;

我再也不相信这是可能的,但拥有它会很好。

1 个答案:

答案 0 :(得分:2)

不,在编译时,无法限制注释的属性仅可用,具体取决于带注释的目标。处理注释时,您始终可以在运行时抛出异常。

否则,您必须定义和使用不同的注释类型。