2016-04-22 42 views
1

在我的應用的實體類聲明等轉換一個數字常數爲一定字符串表達式

public static final int MAX_VALUE = 999; 

該常數一個數字常數在應用程序的不同部分已被使用。

現在我想在參數註釋中使用這個常量在寧靜的服務中。問題是註釋@DefaultValue需要一個字符串而不是一個int。所以,我嘗試使用String.valueOf得到一個字符串

@DefaultValue(String.valueOf(PDCRuleMapping.MAX_VALUE)) final int upperBound, 

但是,這並不編譯,因爲

的註釋屬性的值DefaultValue.value必須是一個常量表達式

燦我重複使用我的數字常量來獲得一個常量字符串表達式,或者我必須寫"999"

回答

2

根據第一個String類型定義一個新常量,並在註釋中使用該常量。

public static final int MAX_VALUE = 999; 
public static final String MAX_VALUE_AS_STRING = String.valueOf(MAX_VALUE); 

然後,你可以有以下的,不重複的最大值的值:

@DefaultValue(PDCRuleMapping.MAX_VALUE_AS_STRING) final int upperBound; 
1

我想你只有兩個選擇:

  • 或者使用字符串文本中註釋@DefaultValue("999")
  • 或聲明字符串常量:

    public static final int MAX_VALUE = 999; 
    private static final String MAX_VALUE_STRING = String.valueOf(MAX_VALUE); 
    @DefaultValue(MAX_VALUE_STRING) 
    

    如果在註釋中使用該值的唯一地方是在一個類中,則可能需要在該類中聲明字符串常量爲private。

相關問題