[英]Converting a numeric constant to a constant string expression
我的應用程序中的實體類聲明了一個數字常量,如
public static final int MAX_VALUE = 999;
此常量已在應用程序的不同部分中使用。
現在我想在參數注釋中的寧靜服務中使用這個常量。 問題是注解@DefaultValue需要一個字符串而不是一個int。 所以我嘗試使用String.valueOf
來獲取字符串
@DefaultValue(String.valueOf(PDCRuleMapping.MAX_VALUE)) final int upperBound,
但它不會編譯,因為
注釋屬性 DefaultValue.value 的值必須是常量表達式
我可以重用我的數字常量以某種方式獲得一個常量字符串表達式,還是我必須寫"999"
?
到目前為止,唯一對我有用的解決方法是定義一個 String 常量,如下所示:
public static final String MAX_VALUE_AS_STRING = "" + MAX_VALUE;
@DefaultValue(MAX_VALUE_AS_STRING) final int upperBound;
或者,您可以直接在注釋中使用字符串連接:
@DefaultValue("" + MAX_VALUE) final int upperBound;
請記住,此上下文中所需的常量表達式不允許方法調用,僅允許運算符。
我認為你只有兩個選擇:
@DefaultValue("999")
或聲明一個字符串常量:
public static final int MAX_VALUE = 999; private static final String MAX_VALUE_STRING = "" + MAX_VALUE; @DefaultValue(MAX_VALUE_STRING)
如果您在注釋中使用該值的唯一地方是在一個類中,您可能希望在該類中將字符串常量聲明為私有。
基於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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.