2010年9月6日月曜日

ToStringBuilderを使用したtoString実装

Apache Commons LangにtoStringを簡単に実装するためのクラスToStringBuilderというのがあったので使ってみた(commons-lang-2.1.jar使用)。

Beanクラス(toString実装クラス)
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

public class CommonLangTestBean {

    private String aaa;

    private String bbb;

    private String ccc;

    private String ddd;

    private String eee;

    private String fff[] = {"fff0", "fff1", "fff2"};
    
    /**
     * コンストラクタ。
     */
    public CommonLangTestBean() {

    }

    /**
     * aaa を取得します。
     *
     * @return aaa
     */
    public String getAaa() {
        return aaa;
    }

    /**
     * aaa を設定します。
     *
     * @param aaa 設定する aaa
     */
    public void setAaa(String aaa) {
        this.aaa = aaa;
    }

    /**
     * bbb を取得します。
     *
     * @return bbb
     */
    public String getBbb() {
        return bbb;
    }

    /**
     * bbb を設定します。
     *
     * @param bbb 設定する bbb
     */
    public void setBbb(String bbb) {
        this.bbb = bbb;
    }

    /**
     * ccc を取得します。
     *
     * @return ccc
     */
    public String getCcc() {
        return ccc;
    }

    /**
     * ccc を設定します。
     *
     * @param ccc 設定する ccc
     */
    public void setCcc(String ccc) {
        this.ccc = ccc;
    }

    /**
     * ddd を取得します。
     *
     * @return ddd
     */
    public String getDdd() {
        return ddd;
    }

    /**
     * ddd を設定します。
     *
     * @param ddd 設定する ddd
     */
    public void setDdd(String ddd) {
        this.ddd = ddd;
    }

    /**
     * eee を取得します。
     *
     * @return eee
     */
    public String getEee() {
        return eee;
    }

    /**
     * eee を設定します。
     *
     * @param eee 設定する eee
     */
    public void setEee(String eee) {
        this.eee = eee;
    }
    
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
    }
}



実行クラス
public class CommonLangTest {

    /**
     * コンストラクタ。
     */
    public CommonLangTest() {

    }

    public static void main(String[] args) {
        CommonLangTestBean cltb = new CommonLangTestBean();
        cltb.setAaa("aaahoge");
        cltb.setBbb("bbbhoge");
        cltb.setCcc("ccchoge");
        System.out.println(cltb.toString());
    }
}


実行結果
ommonLangTestBean@b2fd8f[aaa=aaahoge,bbb=bbbhoge,ccc=ccchoge,ddd=<null>,eee=<null>,fff={fff0,fff1,fff2}]


スタイル指定を変更(CommonLangTestBean.java)
@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}


実行結果 これが一番見やすいかな
CommonLangTestBean@b2fd8f[
  aaa=aaahoge
  bbb=bbbhoge
  ccc=ccchoge
  ddd=<null>
  eee=<null>
  fff={fff1,fff2,fff3}
]


リフレクション使えばできると思うけど、ライブラリとして用意されているので使う価値ありそうですね。toStringを実装しておくとデバッグの時も何かと便利だし。

0 件のコメント:

コメントを投稿