SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Jakarta Commonsを使ってJDKクラスを拡張する:パート1

Commons Validator/Collections/Chain/Functors/Langの利用

Lang

 このLang APIは「java.lang」パッケージに対する拡張です。私はCommons Langが将来JDKの一部になることを望んでいます。このパッケージにはJavaプロジェクトで使用できるユーティリティメソッドが数多く含まれています(JakartaのWebサイトに包括的なユーザーガイドがあり、javadocには大部分のクラスについて簡単な用法が記載されています)。本稿では特に興味深いクラスだけを紹介します。サンプルのソースファイルは「in.co.narayanan.commons.lang」パッケージに収められています。

 StringUtilsWordUtilsStringEscapeUtilsRandomStringUtilsの各クラスには有用な文字列操作メソッドが備わっています。以下のリストでは、これらのメソッドの中でよく使うものを取り上げ、その用法を示します。

 次のメソッドは、たとえばJTableセルなどでGUI内の表示領域が制限されている場合に、メッセージの一部だけを表示します。

String message = "Please check the logs for an error.";
message = StringUtils.abbreviate(message, 25);

 次のメソッドは、Javaで開発されるデスクトップアプリケーションで非常に役立ちます(たとえば、電子メールを作成して送信する機能が必要なJava Swingアプリケーションなど)。

String message = "jakarta commons";
message = StringUtils.capitalize(message);

 次に示すのはWordUtilsクラスからのもので、文字列を大文字にする2種類のメソッドです。

String message = "jakarta commons";
message = WordUtils.capitalize(message);

String message = "jakarta COMMONS";
message = WordUtils.capitalizeFully(message);

 詳しい用法についてはjavadocを参照してください。

 次のメソッドは前後にスペースを入れてメッセージを位置合わせするのに便利です。

String message = "java";
message = StringUtils.center(message, 10);

 これまでは文字列処理のためにトークン化のコードを書くことがよくありましたが、Langを使えばその必要はありません。splitメソッドはトークン化の処理を行い、String配列を返してくれます。joinメソッドを使用すると、String配列から新しい文字列を作成できます。

String message = "hello how are you";
String messageTokens[] = StringUtils.split(message, ' ');

String newMessage = StringUtils.join(messageTokens, '$');

 文字列内でのパスワード表示も、overlayメソッドで簡単に実現できます。replaceメソッドは非常に優秀で、単語を検索して置換する機能も備えています。そのため、文字位置を気にする必要はありません。

String message = "This is a demo for replace and overlay feature";
message = StringUtils.replace(message, "demo", "illustration");

message = "Your password is: somepassword";
message = StringUtils.overlay(message, "*****", 18, message.length());

 StringEscapeUtilsクラスには、HTML、Java文字列、JavaScript文字列、SQL、およびXMLをエスケープ/エスケープ解除するためのメソッドがあります。

String html = "<h1>This will be displayed in the <i>HTML</i> page. 
Hence the <b>tags</b> will be escaped.<h1>";
String escapedHtml = StringEscapeUtils.escapeHtml(html);

 次のメソッドではランダムなパスワードを生成できます。

String randomPassword = RandomStringUtils.randomAlphanumeric(8);
System.out.println("Random Password:" + randomPassword);

 以降では、各パッケージについて簡単に触れておきます。

org.apache.commons.lang

 ArrayUtilsBooleanUtilsCharRangeCharSetCharUtilsSystemUtilsValidateが注目すべきクラスです。詳細はjavadocを参照してください。

org.apache.commons.lang.builder

 クラスCompareToBuilderEqualsBuilderHashCodeBuilderToStringBuilderは、それぞれメソッドcompareToequalshashCodetoStringを実装するのに役立ちます。これらのクラスは、ほぼすべてのJavaプロジェクトで必要になります。

org.apache.commons.lang.enums

 Java 1.5では列挙型がサポートされています。したがって、このパッケージが役に立つのはJDK 1.5より前のプロジェクトです。このパッケージのjavadocには使用例が掲載されています。

org.apache.commons.lang.exception

 NestableExceptionクラスは例外の原因をリンクするためのサポートを提供します。すべての例外についてスタックトレースができると、エラーの根本原因をすばやく突き止めるのに役立ちます。これは特にJDK 1.4より前のプロジェクトで有用です。JDK 1.4以降には、ネストした例外のサポートが備わっています。

org.apache.commons.lang.math

 IntRangeFractionNumberUtilsRandomUtilsが注目すべきクラスです。詳細はjavadocを参照してください。

org.apache.commons.lang.mutable

 java.langパッケージ内の基本型のラッパーは不変ですが、このパッケージに含まれているラッパークラスは可変です。詳細はjavadocを参照してください。

org.apache.commons.lang.time

 DateUtilsDataFormatUtilsFastDateFormatStopWatchなどのクラスが有用です。詳細はjavadocを参照してください。

まとめ

 Jakarta Commonsについて紹介するシリーズ第1回では、次のことを取り上げました。

  • Commonsのさまざまなコンポーネントが提供する豊富な機能
  • ユーティリティクラスの特定のコンポーネントやメソッドの具体的な用途
  • さまざまなAPIで使われているデザインパターン
  • さまざまなAPIのパッケージとクラスの概要

 これからJavaアプリケーションをデザインしたり開発したりするときには、有用なクラスを選んで適切に使用できるのではないでしょうか。このシリーズの第2回と第3回では、さらに興味深いコンポーネントについて解説します。最後までお付き合いいただけば、あなたもJakarta Commonsコンポーネントの大部分のクラスをJDKの一部にすべきだと確信するでしょう。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Narayanan A.R.(Narayanan A.R.)

テスト駆動開発、アジャイル方法論、Javaテクノロジ、およびデザインパターンの熱烈な擁護者。Javaテクノロジを使ったソフトウェアのデザインおよび開発に携わって数年になる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/283 2006/04/11 19:09

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー