Javaでprintfデバッグする時ToStringBuilderが役に立つ
ローカルでデバッガ使いながら動かしてた時は大丈夫だったけど、サーバにデプロイするとよく分からないエラーが出てきたのでログに書き出してみよう!みたいな流れでこんなコードを仕込む事があると思います。
logger.info("id = " + obj.getId() + " name = " + obj.getName());
このように2つくらいのフィールドを出力するだけならいいですが、もしフィールド数が多い場合に全てログ出力したい時はかなり面倒です。
こんな時にcommons-langのToStringBuilderを使えばとってもカンタンにできたりします。
logger.info(ToStringBuilder.reflectionToString(obj, ToStringStyle.MULTI_LINE_STYLE));
表示結果はこんな感じ。
TestController$SampleClass@7ecec0c5[ id=1 name=horimislime age=17 ]
第二引数のToStringStyleで表示フォーマットも指定できて、自分はいつもフィールドごとに改行を入れてくれるMULTI_LINE_STYLEを指定しています。とっても見やすい!
ToStringBuilderは名前の通りtoStringの実装をラクにするクラスなんですが、個人的にはこういうデバッグ用途の方が重宝していますw まわりで使っている人が少なかったので紹介でした。
他にもcommonsの便利メソッドをqiitaにまとめたので、よかったらどうぞ。