ToStringBuilder より ToStringHelper の方が見やすい!
Lang - Home の ToStringBuilder をよく使ってましたが、最近 Xtend - Modernized Java の ToStringHelper に乗り換えました。
Xtend だからと言われそうなので Java で書いてみました。
import java.util.Date; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.eclipse.xtext.xbase.lib.util.ToStringHelper; public class Main { public static void main(String... args) { ToStringBuilderData builder = new ToStringBuilderData( 1, "あいうえお", new Date()); System.out.println("ネストがnull"); System.out.println(builder); builder.generateNest(); System.out.println("ネストがnot null"); System.out.println(builder); ToStringHelperData helper = new ToStringHelperData( 1, "あいうえお", new Date()); System.out.println("ネストがnull"); System.out.println(helper); helper.generateNest(); System.out.println("ネストがnot null"); System.out.println(helper); } } class ToStringBuilderData { private int id; private String name; private Date date; private ToStringBuilderData nest; public ToStringBuilderData(int id, String name, Date date) { this.id = id; this.name = name; this.date = date; } public void generateNest() { nest = new ToStringBuilderData(id, name, date); } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } } class ToStringHelperData { private int id; private String name; private Date date; private ToStringHelperData nest; public ToStringHelperData(int id, String name, Date date) { this.id = id; this.name = name; this.date = date; } public void generateNest() { nest = new ToStringHelperData(id, name, date); } @Override public String toString() { return new ToStringHelper().toString(this); } }
実行結果
ネストがnull xtendjunit.ToStringBuilderData@2cf0a755[ id=1 name=あいうえお date=Mon Feb 03 21:10:50 JST 2014 nest=<null> ] ネストがnot null xtendjunit.ToStringBuilderData@2cf0a755[ id=1 name=あいうえお date=Mon Feb 03 21:10:50 JST 2014 nest=xtendjunit.ToStringBuilderData@192277ed[ id=1 name=あいうえお date=Mon Feb 03 21:10:50 JST 2014 nest=<null> ] ] ネストがnull ToStringHelperData [ id = 1 name = "あいうえお" date = Mon Feb 03 21:10:50 JST 2014 nest = null ] ネストがnot null ToStringHelperData [ id = 1 name = "あいうえお" date = Mon Feb 03 21:10:50 JST 2014 nest = ToStringHelperData [ id = 1 name = "あいうえお" date = Mon Feb 03 21:10:50 JST 2014 nest = null ] ]
ToStringBuilder でも、ToStringStyle.MULTI_LINE_STYLE を指定すると良い感じなんですが、ネストした場合にイマイチ。。