public static final で定義した変数は、コンパイル時に呼び出した場所へインライン展開されるから。定数の値を再設定してそのファイルだけを再コンパイルした場合、定数を呼び出す側のファイルは以前の定数を使用したままになる。 private static final で定義した場合 (推奨) Api.java private static final int VERSION = 10; public static int getVersion() { return VERSION; } Main.java Integer apiVersion = Api.getVersion(); Main.classをデコンパイル Integer apiVersion = Integer.valueOf(Api.getVersion()); public static final で定義した場