Java apache commons lang3 初めてのjava commons
javaプログラミングの中級者程度を対象に、現場で利用するであろうサンプルプログラムを公開していこうと思います。
まずは、commonsを利用して適当なケースを設定し、使い方やサンプルプログラムを作成していこうと思います。
commonsの環境設定
mavenを利用する場合は、以下を利用してください。
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.5</version> </dependency>
mavenを利用しない場合は、apacheのサイトからjarをダウンロードし、ビルドバスに追加してください。
https://commons.apache.org/proper/commons-lang/download_lang.cgi
今回は環境では、Apache Commons Lang 3.5を利用します。
jdkは1.8を利用します。
※現在の最新版は3.6です。(2017-06-08)
簡単な導入確認
導入後にcommonsのクラス、メソッドが利用できるか確認します。
packageには「jp.pjin.tech.java」を利用していますが、お好きなもので試して下さい。
package jp.pjin.tech.java; import org.apache.commons.lang3.builder.ToStringBuilder; public class CommonsExample1 { public static void main(String[] args) { Rect r = new CommonsExample1().new Rect(); r.x = "332"; r.y = "543"; System.out.println(ToStringBuilder.reflectionToString(r)); } class Rect { String x; String y; } }
上記コードがコンパイルされれば、commonsのjarファイルがビルドパスに追加されています。
因みに、MapやListに関してはObject#toStringがオーバーライドされているので、悲しい結果になると思います。
POJOオブジェクトなどフィールドに値を持っているものが有効です。
次回から細かくサンプルを書く予定ですが、今回は、ArrayListのtoStringの中身をのせておきます。
AbstractCollection#toString
public String toString() { Iterator<E> it = iterator(); if (! it.hasNext()) return "[]"; StringBuilder sb = new StringBuilder(); sb.append('['); for (;;) { E e = it.next(); sb.append(e == this ? "(this Collection)" : e); if (! it.hasNext()) return sb.append(']').toString(); sb.append(',').append(' '); } }
上記の内容で分かるように、反復子(iterator)を利用し、内容を出力してくれます。
System.out.printlnにはObjectの引数が渡されると、valueOfメソッド内でtoStringを実行します。
ですので、ArrayListやHashMapのインスタンスは、System.out.printlnにて出力したほうが良いと思います。