[Java] public static final を使わない方がいい理由
public static final で定義した変数は、コンパイル時に呼び出した場所へインライン展開されるから。定数の値を再設定してそのファイルだけを再コンパイルした場合、定数を呼び出す側のファイルは以前の定数を使用したままになる。
private static final で定義した場合 (推奨)
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 で定義した場合 (非推奨)
public static final int VERSION = 10;
Main.java
Integer apiVersion = Api.VERSION;
Main.classをデコンパイル
Integer apiVersion = Integer.valueOf(10);