是否可以覆盖java注释?如果是这样?怎么样?

时间:2013-07-11 09:13:36

标签: java validation annotations

我基于java注释在我的应用程序周围构建了一个验证机制 - 类似于Java Bean validation,唯一的例外是我的更容易 - 它只有值,值的类型是Float

@Target({ FIELD })
@Retention(RUNTIME)
@Documented
public @interface Min {    
   float value() default 0f; 
}

现在我需要扩展此机制以支持Integer值。是否可以提供注释的覆盖?类似的东西:

@Target({ FIELD })
@Retention(RUNTIME)
@Documented
public @interface Min {    
   int value() default 0; 
}

或者是否可能只存在两个属性中的一个?类似的东西:

@Target({ FIELD })
@Retention(RUNTIME)
@Documented
public @interface Min {    
   float value() default 0f; 
   int intValue();
}

欢迎任何其他机制。

谢谢!

1 个答案:

答案 0 :(得分:1)

注释类型不能声明超类或超接口;有关详细信息,请参阅JLS 9.6

以下是几个选项:

  • 修改注释以支持两个值
  • 使用不同的名称和值创建第二个注释,并让注释处理器处理两个注释。