AppConstants.java
public class AppConstants {
// アプリケーションで使用される定数は、public static final で定義する
// サービス名(文字列の定数)
public static final String SERVICE_NAME = "MyApp";
// 税率(数値の定数)
public static final double TAX_RATE = 0.1;
// 最大ログイン試行回数(整数の定数)
public static final int MAX_LOGIN_ATTEMPTS = 3;
// コンストラクタは private にしてインスタンス化を禁止(常套テクニック)
private AppConstants() {
// 何もしない
}
}
Main.java
public class Main {
public static void main(String[] args) {
// AppConstants は new しなくても使える
System.out.println("サービス名: " + AppConstants.SERVICE_NAME);
System.out.println("税率: " + AppConstants.TAX_RATE);
System.out.println("最大ログイン試行回数: " + AppConstants.MAX_LOGIN_ATTEMPTS);
}
}
実行結果
サービス名: MyApp
税率: 0.1
最大ログイン試行回数: 3
解説
なぜ定数に public static final
を使うのか?
public
… 他のクラスからアクセスできるようにするためstatic
… インスタンスを作らずに使えるようにするためfinal
… 値を変更不可にするため(定数化)
この3つを組み合わせることで、**「どこからでも読める・1つだけある・変わらない値」**として使えます。
定数名はすべて大文字+アンダースコア(Javaの慣習)
public static final int MAX_LOGIN_ATTEMPTS = 3;
- Javaでは「定数」は 全大文字+アンダースコア区切りが定番です
- 値が変更されないことが 名前の見た目から伝わる ため、可読性が高まります
インスタンス化を防ぐテクニック
private AppConstants() {}
このようにコンストラクタを private
にすることで、new AppConstants()
を禁止できます。
ユーティリティクラスや定数クラスでは常套手段です。
まとめ
public static final
は定数の三種の神器(アクセス可/共有/不変)- 定数は設計上「意味のある値」に名前を与え、意図を明示する
AppConstants
のような「定数だけをまとめたクラス」は現場でもよく使われるprivate
コンストラクタでインスタンス化を防止するのもプロっぽい技法
Just Keep Typing, Baby!では、この「static修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!
// tesh:
// 不安なまま前に進んでも、いずれ戻される。今だ。