/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 104 「static修羅道」 Step04 解答例 | Javaドリル

104 「static修羅道」 Step04 解答例

eyecatch104-step04 104「static修羅道」

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 を使うのか?

  1. public … 他のクラスからアクセスできるようにするため
  2. static … インスタンスを作らずに使えるようにするため
  3. final … 値を変更不可にするため(定数化)

この3つを組み合わせることで、**「どこからでも読める・1つだけある・変わらない値」**として使えます。


定数名はすべて大文字+アンダースコア(Javaの慣習)

public static final int MAX_LOGIN_ATTEMPTS = 3;
  • Javaでは「定数」は 全大文字+アンダースコア区切りが定番です
  • 値が変更されないことが 名前の見た目から伝わる ため、可読性が高まります

インスタンス化を防ぐテクニック

private AppConstants() {}

このようにコンストラクタを private にすることで、new AppConstants() を禁止できます。
ユーティリティクラスや定数クラスでは常套手段です。


まとめ

  • public static final は定数の三種の神器(アクセス可/共有/不変)
  • 定数は設計上「意味のある値」に名前を与え、意図を明示する
  • AppConstants のような「定数だけをまとめたクラス」は現場でもよく使われる
  • private コンストラクタでインスタンス化を防止するのもプロっぽい技法

104 ステップアップ問題 「static修羅道」


Just Keep Typing, Baby!では、この「static修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!

// tesh:
// 不安なまま前に進んでも、いずれ戻される。今だ。

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

コメント

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