Springフレームワークでは、Assert.hasText()メソッドが提供されており、指定された文字列が空または空白のみであるかを確認します。このメソッドは、条件に違反した場合、IllegalArgumentException例外をスローし、指定されたエラーメッセージを含みます。
メソッド署名
public static void hasText(String textToCheck, String message)
- textToCheck: チェック対象の文字列。
- message: チェックが失敗した場合、
IllegalArgumentException例外で使用されるエラーメッセージ。
使用例
以下のコードでは、企業情報クラスの名前フィールドに対してhasText()を使用しています。
例1: 基本的な使い方
import org.springframework.util.Assert;
public class BusinessProcessor {
public void registerBusiness(BusinessDetails details) {
Assert.hasText(details.getBusinessName(), "事業名は必須です!");
// 他のビジネスロジック
}
}
class BusinessDetails {
private String businessName;
public String getBusinessName() {
return businessName;
}
public void setBusinessName(String businessName) {
this.businessName = businessName;
}
}
例2: 実行例
public class Application {
public static void main(String[] args) {
BusinessProcessor processor = new BusinessProcessor();
BusinessDetails details = new BusinessDetails();
details.setBusinessName("Amazon Japan");
try {
processor.registerBusiness(details);
System.out.println("登録が完了しました。");
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage());
}
details.setBusinessName(" "); // 空白のみ
try {
processor.registerBusiness(details);
System.out.println("登録が完了しました。");
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage()); // 出力: 事業名は必須です!
}
}
}
重要なポイント
- 例外の種類:
Assert.hasText()はIllegalArgumentExceptionをスローします。AssertionErrorではありません。これは、パラメータの検証や入力チェックに適していることを示します。 - 性能への影響: このメソッドは呼び出されるたびに文字列を確認しますが、特に入力検証のシナリオではそのパフォーマンスオーバーヘッドは許容範囲内です。
- コードの明瞭性:
Assert.hasText()を使用することで、コードがより簡潔かつ理解しやすくなります。これは、文字列が空でないだけでなく、空白のみではないことを明確に表現するためです。