インターフェースの静的メソッド
別のユーティリティクラスではなく、インターフェースに静的ユーティリティメソッドを直接追加する。
コード比較
✕ Java 7
// Separate utility class needed
public class ValidatorUtils {
public static boolean isBlank(
String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (ValidatorUtils.isBlank(input)) { ... }
✓ Java 8+
public interface Validator {
boolean validate(String s);
static boolean isBlank(String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (Validator.isBlank(input)) { ... }
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
整理された構成
関連するユーティリティを別クラスではなくインターフェースにまとめられます。
発見しやすさ
ファクトリやヘルパーメソッドが期待する場所で見つかります。
APIの一貫性
*Utilsや*Helperといった別クラスが不要になります。
旧来のアプローチ
ユーティリティクラス
モダンなアプローチ
インターフェースの静的メソッド
JDKバージョン
8
難易度
初級
JDKサポート
インターフェースの静的メソッド
利用可能
JDK 8(2014年3月)以降、利用可能
仕組み
Java 8以前、インターフェースに関連するユーティリティメソッドは別クラス(例:CollectionのためのCollections)に置く必要がありました。インターフェースの静的メソッドにより、関連するユーティリティをまとめて配置できます。Comparator.comparing()、Stream.of()、List.of()などのモダンなAPIで広く使われています。
関連ドキュメント