StringUtil.java
public class StringUtil {
// null または空文字列であれば true を返す
public static boolean isNullOrEmpty(String str) {
return str == null || str.isEmpty();
}
// 先頭1文字を大文字にし、残りをそのまま返す(例: hello → Hello)
public static String capitalize(String str) {
if (str == null || str.isEmpty()) {
return str; // nullまたは空文字列はそのまま返す
}
// substring(0, 1): 先頭1文字
// substring(1): 2文字目以降
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
// インスタンス化を禁止する private コンストラクタ(ユーティリティクラスの常套パターン)
private StringUtil() {
// 何もしない
}
}
Main.java
public class Main {
public static void main(String[] args) {
System.out.println("isNullOrEmpty(null): " + StringUtil.isNullOrEmpty(null));
System.out.println("isNullOrEmpty(\"\"): " + StringUtil.isNullOrEmpty(""));
System.out.println("isNullOrEmpty(\"hello\"): " + StringUtil.isNullOrEmpty("hello"));
System.out.println("capitalize(\"hello\"): " + StringUtil.capitalize("hello"));
System.out.println("capitalize(\"\"): " + StringUtil.capitalize(""));
}
}
実行結果
isNullOrEmpty(null): true
isNullOrEmpty(""): true
isNullOrEmpty("hello"): false
capitalize("hello"): Hello
capitalize(""):
解説
この問題では、「状態を持たず、処理だけを提供するクラス」としての
**ユーティリティクラス(ツールクラス)**を設計・実装しました。
🔸 ユーティリティクラスとは?
ユーティリティクラスとは、「インスタンス化せずに使う便利なメソッド集」です。
Java標準ライブラリでも、Math
や Collections
などがこれに該当します。
特徴:
- メソッドはすべて
static
- 状態(インスタンス変数)を持たない
- コンストラクタを
private
にしてインスタンス化を禁止
isNullOrEmpty
メソッドのポイント
return str == null || str.isEmpty();
nullチェックと空文字チェックの両方を一度に行える、よくあるパターンです。
多くのアプリケーションで、入力値チェックとして重宝されます。
capitalize
メソッドの注意点
return str.substring(0, 1).toUpperCase() + str.substring(1);
- 先頭1文字だけを大文字化
- 残りはそのまま
- 空文字やnullを受け取ったときの安全対策も実装
なぜ private
コンストラクタにするのか?
private StringUtil() {}
この一行で、new StringUtil()
を 外部から不可能にできます。
「newしても意味がないクラス」をインスタンス化させないための、安全設計です。
まとめ
- ユーティリティクラスは 処理だけを持つクラスとして、
static
メソッドで構成される - インスタンス変数を使わないため、
new
は不要(むしろ禁止すべき) - Javaにおける「設計の意図」としての
static
の使い道が、明確に見えてくる
Just Keep Typing, Baby!では、この「static修羅道」でつまづいた人向けの解説をしています。こちらもぜひ!
// tesh:
// これは「理解してる風」では絶対超えられない壁。