2013-07-11 37 views
1

我基于java注释构建了一个基于java注释的验证机制 - 类似于Java Bean validation,唯一的例外是我的更容易 - 它只有值,值的类型是Float可以覆盖java注释吗?如果是这样?怎么样?

@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

注解类型不能声明超类或超接口;详情请参见JLS 9.6

这里有几个选项:

  • 修改注释,以支持两个值
  • 创建一个不同的名称和值的第二批注,并让您注释处理器同时处理注解。
+0

是的我知道除了具有特殊法规的Java EE注释外,不允许继承。我想我会选择其中的一种。现在我正在尝试多种方式。 10倍! –

+1

Java EE注释覆盖是一个不同的概念。它不涉及Java语言意义上的继承。而是关于注释的含义以及Java EE如何对其进行操作。 –

相关问题