Beginner's Hack

復習用。誰かのためになれば...

private static finalに惑わされた- Java

private static final String xxx = "YYY";

たまに見かけるこのコード。
privateでクラス内からしかアクセスできないのに、staticにする必要ってあるんか? と疑問に思ったので少し調べてみました。

private

アクセス修飾子 | Javaコード入門

現在のクラスからだけアクセスできる

private修飾子についての認識は合っており、特に問題なし。

static

static修飾子 | Javaコード入門

クラスのメンバーにstatic修飾子を付与すると、クラスをインスタンス化しなくてもアクセスできるようになります。具体的には「クラス名.メンバー名」の形式でアクセスできます。

static修飾子についても、特に認識は間違っていない気がする…

static final

static final修飾子 | Javaコード入門

定数であることはfinal修飾子だけで表現できますが、static修飾子を付けるのがお作法です。static修飾子を付与することで、インスタンス生成のたびに同じ値をインスタンスにコピーするのを防ぐことができます。

なるほど。finalと組み合わせることで、インスタンス化しなくてもアクセスできると言う点じゃなくて、同じ値がインスタンス毎にコピーされるのを回避すると言う点でメリットがあったみたい。