あるプロジェクトで定数(静的final、コンパイル時に初期化される)が宣言されると、別のプロジェクトの参照はコンパイル時にリテラルに置き換えられます。定数参照のコンパイル時のリテラルへの置き換えの回避
それは参照をこの問題を回避し、持っている唯一の方法は、一定のフィールドを参照するのではなくリテラルは例えば「最終」クラスの定数を宣言(インタフェースではなく)と省略することがあるようです:
public class MyClass {
public static String MY_CONSTANT = "The constant value";
}
残念ながら、私はこれを理解する前に定数でいっぱいのインターフェイスをコーディングしましたが、今は定数を変更するために、それを参照するすべてのプロジェクトを特定して再コンパイルする必要があります。私は何かがスリップする恐れがあります。
また、「最終」修飾語を含まない定数は正確に一定ではありませんか?
リテラルによる定数参照の置換を抑制できるコンパイルオプションはありますか?
あなたはJavaに関する知識の中に穴を発見しました。そして記録のために:はい、これは何とか大きなセットアップでは問題です** **しかし、これはよく知られている問題です。どんな妥当な**ビルドシステム**でもそれに対処できるはずです。 **理解して**依存する必要があるすべてのクラスを再コンパイルする必要があります... – GhostCat
私たちはずっと前と同じ過ちをしていました。 インタフェースをgetter-Methodsに変更しました。 と実装クラス。 Joshua Blochから "Effective Java"を追加してください。項目19: "タイプを定義するためにのみインターフェースを使用する" –