2016-10-12 9 views
1
でのString-時定数をコンパイルする

私は、コンパイル時定数文字列を必要とする注釈を持っていると私は、のいずれかからコンパイル時定数のintで初期化したいです私が使っているライブラリ変換は、コンパイル時定数int型の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言語の「すばらしい」機能です。

もし可能であれば、別の答えで示唆されているように、値パラメータとしてintを取るように注釈を変更することもできます(ただし注釈はライブラリからも得られます)。

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); 
関連する問題