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

Hello, Stupid World!

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

Commons Langについて、まだまだ良い機能があるので
テストコードを交え紹介します。

配列の内容を分かりやすい文字形式にするArrayUtils.toString

assertEquals("toString", "{a,b,c}", ArrayUtils.toString(new String[]{"a","b","c"}));

普通にtoStringした場合は、[Ljava.lang.String;@99353f と
値が全然分からない形で出力されてしまいます。

同じように自作クラスの内容を文字形式にするのに
便利なのが以下の ToStringBuilder.reflectionToString です

class TestClass {
 int id;
 String name;
}

TestClass test = new TestClass();
test.id = 1;
test.name = "aaa";
assertEquals("toStringBuilder", "LangTest$TestClass@1198891[id=1,name=aaa]", ToStringBuilder.reflectionToString(test));

こちも普通にtoStringしただけだと LangTest$TestClass@15663a2
といった値が分からない形式になってしまいます。

エスケープ関連の機能も多く存在します。
HTMLのエスケープに使用する StringEscapeUtils.escapeHtml4

assertEquals("toStringBuilder", "X&Y", StringEscapeUtils.escapeHtml4("X&Y"));

他にもJava, JavaScript, XMLのエスケープを行うものもあります。

日付関連の処理に便利なのは DateUtils です。
DateUtils.truncate は年や日付、時間など指定した単位以下を
切捨てます。

Calendar cal = new GregorianCalendar(2013, 11, 10, 23, 59, 59);
Calendar cal2 = new GregorianCalendar(2013, 11, 10, 0, 0, 0);
Calendar truncatedDate = DateUtils.truncate(cal, Calendar.DATE );

assertTrue("日付切捨て", cal2.equals(truncatedDate));


四捨五入する round というメソッドもあります。
同日か判断する isSameDay というのも便利です。

Calendar cal = new GregorianCalendar(2013, 11, 10, 23, 59, 59);
Calendar cal2 = new GregorianCalendar(2013, 11, 10, 0, 0, 0);

assertTrue("同日", DateUtils.isSameDay(cal, cal2));


今回でCommonsも終わりにしてフレームワーク関連の話を
しばらく書いていきます。