Java 註解中的常數值
Java 中的常見做法是定義儲存用作註解參數的常數數組的介面。例如,您可能有這樣的介面:
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
在註解類別時,您可能想要使用這些常數作為參數值,如下所示:
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
但是,此方法需要在每個註解實例中指定字串值。直接使用常數會更方便:
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
不幸的是,Java 不允許使用陣列或常數作為註解參數值。這是因為註解是在編譯時解析的,只有原始值或字串可以用作編譯時常數。
因此,在 Java 中沒有直接的方法來實現所需的行為。 FieldValues 中的陣列並不是真正的常數,因為任何有權存取它的程式碼都可以在執行時修改其元素。為了確保真正的不變性,您可以考慮使用不可變類別來包裝字串值。
以上是Java註解可以使用陣列或常數作為參數值嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!