Javaライブラリ(Commons)Lang | Hello, Stupid World!

Hello, Stupid World!

いろいろとメモ代わりに書いていきます。

Javaの便利なライブラリ、Commonsを紹介します。

Commonsはちょっとした、標準ライブラリをちょっと拡張して
便利にしたようなライブラリです。
わずかな拡張ではありますが、その分使える場面は多いです。
知っておくと生産性の向上に役立ちますし、無駄なミスも減ります。

今回はその中でも文字列の処理に重点を置いたLangパッケージです。
ダウンロードは以下のApacheのサイトから。

http://commons.apache.org/proper/commons-lang/download_lang.cgi

ダウンロードしたら解凍してビルドパスに追加して下さい。

Langパッケージの中でも一番使われるんじゃないかというのがStringUtilsクラス。
Stringクラスを拡張したものです。

同じかどうか比較するequals(通常のものと違いnullでもエラーにならない)
空かどうか判別するisEmpty
文字を左から抽出するleft
など、多くの便利なメソッドがあります。

使い方はこんな感じです。

[ソース]
String str = null;

if(StringUtils.equals(str, "abc")){
 System.out.println("True");
}else{
 System.out.println("False");
}



[解説]
元の変数がnullですが、StringUtilsを使っているのでNullPointerException
通称ぬるぽは発生しません。
よくJavaで比較する時にif(str == null || str.equals(~))みたいに
書きますがStringUtils.equalsを使えば短く書け、間違えてstr = nullにして
しまうような事もありません。

ライブラリの中も見てみましょう。

public static boolean equals(CharSequence cs1, CharSequence cs2)
{
 return cs1 != null ? cs1.equals(cs2) : cs2 == null;
}


コメントは見やすくする為、削除しています。
特に難しい事は無いですね。単純にnullと比較した後にequalsで比較してます。
ライブラリは使うだけでなく、中身も見る習慣をつけるとプログラミング力が
上がるのでお勧めです。
ちなみに引数の型がCharSequenceとなってますが、これはStringも実装している
文字で使うインタフェースです。


同様に

public static boolean isEmpty(CharSequence cs)
{
 return cs == null || cs.length() == 0;
}


isEmptyはこんな感じ。


public static String left(String str, int len)
{
 if(str == null)
  return null;
 if(len < 0)
  return "";
 if(str.length() <= len)
  return str;
 else
  return str.substring(0, len);
}


leftはこんな感じです。
null比較した後にsubstringで先頭から指定文字分を取得してます。
いずれもStringUtilsのメソッドはnullを最初に比較してnullの場合は処理を
行わないことでぬるぽを避けています。

他にも便利なメソッドが多くあるのでAPIドキュメント見て是非使ってみて下さい。

http://www.jajakarta.org/commons/lang-1.0.1/ja/withoutPrimary/org/apache/commons/lang/StringUtils.html

この中のメソッドを全部覚えるのは大変でしょうけど、文字列関係の処理書くときに
目をざっと通すだけで生産性向上すると思います。

LangパッケージというよりStringUtilsだけになってしまいましたが
便利さは伝わったのではないでしょうか。