Java | static final を使った定数の定義

Java Java
スポンサーリンク

ここまでで「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_NAMEAppConfigクラスに定義した定数を使う
staticnew しなくても使える
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 + "円");
    }
}
Java

5. メリットまとめ

メリット内容
✅ 管理がラクすべての定数を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; でコンパイルエラー。
理由:LIMITfinal なので再代入できない。


8. まとめ

項目内容
目的定数を1か所にまとめて管理する
書き方public static final 型名 定数名 = 値;
利用方法クラス名.定数名 で呼び出す
利点管理がラク・保守が簡単・バグを防ぐ
ファイル名の例AppConfig.java, Constants.java, Settings.java

9. ステップアップ(次に学ぶと良いこと)

上級編の方向性

  1. 外部ファイル(設定ファイル)から読み込む定数(例:config.properties
  2. 環境ごとに設定を切り替える(開発用・本番用)
  3. enum(列挙型)を使って意味のある定数グループを作る

タイトルとURLをコピーしました