2013-07-11 216 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如何對其進行操作。 –

相關問題