2016-10-12 94 views
1

我有一個需要編譯時常量String的註解,我想用一個編譯時常量int從一個我正在使用的庫。所以我落得這樣做是這樣的:將編譯時常量int轉換爲編譯時常量String in Java

public class LibraryClass { 
    public static int CONSTANT_INT = 0; //Where 0 could be whatever 
} 

public class MyClass { 
    private static final String CONSTANT_STRING = "" + LibraryClass.CONSTANT_INT; 

    @AnnotationThatNeedsString(CONSTANT_STRING) 
    public void myMethod() { 
     //Do something 
    } 
} 

我的問題是,是否有轉換原語編譯時間常量字符串比使用"" + PRIMITIVE_TO_CONVERT的更好的辦法?一些將「原子」投射到String的方法?因爲這樣做感覺有點奇怪。

回答

1

我認爲您現在的解決方案是最好的,因爲您正確地確定註解需要「編譯時常量」值。 "" + INT_VALUE至少比通過重複庫中的值創建冗餘性要好,但作爲字符串("23"),它是Java語言的一個「很好」功能,可將您的解決方案確定爲編譯時常量。

如果可以的話,你當然也可以改變Annotation來將int作爲值參數,正如另一個答案中所建議的(但我假設Annotation也來自一個庫)。

0

嘗試使用String.valueOf(LibraryClass.CONSTANT_INT);

+1

但是,不能在註釋中直接使用,只能在CONSTANT_STRING初始化中使用。 –

+0

是「私有靜態最終字符串」CONSTANT_STRING = String.valueOf(LibraryClass.CONSTANT_INT);「不適用? – Anthony

+0

是的,這將工作,並且是一個正確的答案。但我認爲問題創建者要求提供類似@AnnotationThatNeedsString(someCleverCastOf(CONSTANT_INT))的東西。 –

0

我建議

  • 化妝@AnnotationThatNeedsString採取int或
  • 使常數的字符串。您可以在運行時將其解析爲int。

例如

public static int CONSTANT_INT = Integer.parseInt(CONSTANT_STRING);