1

我基于 java 注释围绕我的应用程序构建了一个验证机制——类似于Java Bean 验证,唯一的例外是我的更容易——它只有 value 并且 value 的类型是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();
}

欢迎任何其他机制。

谢谢!

4

1 回答 1

1

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

这里有几个选项:

  • 修改注解以支持两个值
  • 创建具有不同名称和值的第二个注解,并让您的注解处理器处理这两个注解。
于 2013-07-11T09:40:10.940 回答