自分の職場でJavaコードを見つけることになりました。ここにシナリオがあります:ClassA
とClassB
の2つのクラスがあります。インポートされたJavaクラスのpublic static final変数
ClassA
は、その中に4つの静的最終的な文字列値を除いて何もありません。その目的は、ClassA.variable
のような値を使用することです(なぜ、私のコードではないかと聞かないでください)。
ClassB
インポートClassA
。文字列の値をClassA
に編集してコンパイルしました。 ClassB
を実行したとき、新しい値ではなく古い値を使用していたことがわかりました。 ClassA
から新しい値を使用するように、私はClassB
を再コンパイルしなければならなかった! (私はClassA
をインポートする他のクラスを再コンパイルしなければならなかった!)
これはJDK 1.6のためだけであるか、以前に再コンパイルする必要があったはずですClassB
!私を啓発します。 :)
public static finalはコンパイル時定数です。それを知らなかった。それは単なる定数であり、実行時に変更することはできないと思った!ご協力いただきありがとうございます。 –
良いアンサー。変数がインライン展開されていることを確認するには、javapを使用してクラスのコンパイル方法を確認します。 "javap -c Flags" –