private static finalに惑わされた- Java
private static final String xxx = "YYY";
たまに見かけるこのコード。
privateでクラス内からしかアクセスできないのに、staticにする必要ってあるんか?
と疑問に思ったので少し調べてみました。
private
現在のクラスからだけアクセスできる
private修飾子についての認識は合っており、特に問題なし。
static
クラスのメンバーにstatic修飾子を付与すると、クラスをインスタンス化しなくてもアクセスできるようになります。具体的には「クラス名.メンバー名」の形式でアクセスできます。
static修飾子についても、特に認識は間違っていない気がする…
static final
定数であることはfinal修飾子だけで表現できますが、static修飾子を付けるのがお作法です。static修飾子を付与することで、インスタンス生成のたびに同じ値をインスタンスにコピーするのを防ぐことができます。
なるほど。finalと組み合わせることで、インスタンス化しなくてもアクセスできると言う点じゃなくて、同じ値がインスタンス毎にコピーされるのを回避すると言う点でメリットがあったみたい。