DTOやらentiryの変数内容を全部まとめて表示する

引き続きcommons勉強中。
Jakarta Commonsクックブック ―Javaプロジェクト必須のレシピ集
パフォーマンスはよろしくないらしいが、commonsのReflectionToStringクラスという方がおられ、全変数名と値を返してくれるとのこと。
↓こんな感じでtoStringを実装する。(Human.java)

import org.apache.commons.lang.builder.ReflectionToStringBuilder;

/**
 * ある一人の情報をもつエンティティ.
 * @author enokitech
 *
 */
public class Human {

    /** 氏名 */
    private String name;

    /** 年齢 */
    private int age;
    
    /** 身長 */
    private double height;
    
    // コンストラクタ
    public Human(String name, int age, double height) {
        this.name   = name;
        this.age    = age;
        this.height = height;
    }

    // Setter,Getter
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    // Object.toStringをオーバーライド
    @Override
    public String toString() {
        return ReflectionToStringBuilder.toString(this);
    }
}

メインから呼び出してみる。(MyTest.java)

public class MyTest {

    public static void main(String[] args) {
        
        Human human = new Human("Enoki", 25, 180.0);
        
        // 内容の表示
        System.out.println(human.toString());
    }
}

実行結果

Human@1a758cb[name=Enoki,age=25,height=180.0]

こんなかんじで変数名と値が全部出力される。デバッグに便利。
コードは読んでないので仕組みはよくわかんないのですが、java.lang.Class.getDeclaredFields()というのでフィールドと値が取得できるので、その辺のを使ってるのかな?
ただgetDeclaredFieldsをそのまま使うと、設定によってはprivateメンバはセキュリティ上の制約で表示不可なので、全然違うのかも。