ここまでで「static final はクラス全体で共有できる定数」ということを理解できましたね。
では今回はその応用として、
「定数を別ファイル(設定クラス)にまとめて管理する方法」
を、初心者向けにわかりやすく解説します!
1. なぜ定数をまとめるの?
プログラムが大きくなると、
「税率」「上限値」「メッセージ」など、いろんな定数が増えてきます。
たとえば下記のようにあちこちに書いてしまうと…
final double TAX_RATE = 0.1;
final int MAX_USER = 5;
final String APP_NAME = "MyApp";
Java🔻 問題点:
- 同じような定数がいろんなクラスに散らばる
- 値を変えたいとき、全部探して修正しなきゃいけない
- チーム開発のとき、誰がどこで定義したかわからなくなる
💡 そこで登場するのが…
「設定クラス(定数クラス)にまとめて管理する」方法です!
2. 設定クラスを作る
ファイル名:AppConfig.java
// 定数をまとめて管理するクラス
public class AppConfig {
public static final double TAX_RATE = 0.1; // 税率
public static final int MAX_USER = 5; // 最大ユーザー数
public static final String APP_NAME = "MyShop"; // アプリ名
}
Java🧠 ポイント
public:どのクラスからも使えるようにするstatic final:クラス共通で、変更できない定数- まとめることで、値を一括管理できる!
3. 使う側のクラス
ファイル名:Main.java
public class Main {
public static void main(String[] args) {
System.out.println("アプリ名:" + AppConfig.APP_NAME);
System.out.println("税率:" + AppConfig.TAX_RATE);
System.out.println("最大ユーザー数:" + AppConfig.MAX_USER);
double price = 1000 * (1 + AppConfig.TAX_RATE);
System.out.println("税込み価格:" + price + "円");
}
}
Java▶️ 実行結果:
アプリ名:MyShop
税率:0.1
最大ユーザー数:5
税込み価格:1100.0円
解説
| 部分 | 意味 |
|---|---|
AppConfig.APP_NAME | AppConfigクラスに定義した定数を使う |
static | new しなくても使える |
final | 値が変わらない |
public | 他のファイルからもアクセスできる |
つまり、「設定用クラス」を作ることで、
全クラスから「共通の設定値」を呼び出せるようになります。
4. 現実のプロジェクトでの使い方(構成例)
src/
├─ AppConfig.java ← 定数まとめ(設定クラス)
├─ Main.java ← メインプログラム
├─ Product.java ← 商品クラス
├─ User.java ← ユーザークラス
どのクラスでも AppConfig.TAX_RATE のように呼び出せます。
例:別のクラスでも使える
public class Product {
public void printPrice(double basePrice) {
double price = basePrice * (1 + AppConfig.TAX_RATE);
System.out.println("税込み価格:" + price + "円");
}
}
Java5. メリットまとめ
| メリット | 内容 |
|---|---|
| ✅ 管理がラク | すべての定数を1か所にまとめられる |
| ✅ 保守がしやすい | 値を変更したいときに1ファイルだけ修正すればOK |
| ✅ 他クラスと共通化 | どのクラスからでも同じ値を使える |
| ✅ バグ防止 | タイプミスや値の不一致を防げる |
6. 注意点
| 注意点 | 説明 |
|---|---|
| 定数名は大文字+アンダースコア | TAX_RATE, MAX_USER など |
| 値は「不変」なものだけにする | 税率や定数、固定メッセージなど |
| 設定ファイルを作りすぎない | ひとまとめで整理できる単位にする |
| 外部設定ファイルが必要な場合は別途対応 | (※上級編で解説可能) |
7. 練習問題(3問)
問題1
定数をまとめるクラス名としてふさわしいのはどれ?
A. User
B. AppConfig
C. Main
👉 答え:B
解説:設定や定数をまとめるクラスは「Config」「Constants」「Settings」などの名前を付けるのが一般的。
問題2
次のコードの出力結果を答えましょう。
public class Settings {
public static final int MAX_LEVEL = 10;
}
public class Game {
public static void main(String[] args) {
System.out.println("最大レベル:" + Settings.MAX_LEVEL);
}
}
Java👉 答え:
最大レベル:10
問題3
次のコードでエラーになる箇所は?
public class Config {
public static final int LIMIT = 3;
}
class Main {
public static void main(String[] args) {
Config.LIMIT = 5; // ←?
System.out.println(Config.LIMIT);
}
}
Java👉 答え:Config.LIMIT = 5; でコンパイルエラー。
理由:LIMIT は final なので再代入できない。
8. まとめ
| 項目 | 内容 |
|---|---|
| 目的 | 定数を1か所にまとめて管理する |
| 書き方 | public static final 型名 定数名 = 値; |
| 利用方法 | クラス名.定数名 で呼び出す |
| 利点 | 管理がラク・保守が簡単・バグを防ぐ |
| ファイル名の例 | AppConfig.java, Constants.java, Settings.java |
9. ステップアップ(次に学ぶと良いこと)
✅ 上級編の方向性
- 外部ファイル(設定ファイル)から読み込む定数(例:
config.properties) - 環境ごとに設定を切り替える(開発用・本番用)
enum(列挙型)を使って意味のある定数グループを作る
