Class内容を表示するには

歳だからすぐ忘れてしまうのでメモ代わりに日記書きます。
Javaでクラスの中身を出力するにはJakarta Commons Langの中の
ReflectionToStringBuilderが役に立ちます。

下のコードを実行すると

Room@8813f2[roomName=dirty room,person=Person@e09713[name=smajima,age=52]]


と表示されます。デバッグの時に便利だよね。

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

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return ReflectionToStringBuilder.toString(this);
    }
    
}

class Room {
    private String roomName;
    private Person person;
    
    public Room(String roomName, Person person) {
        this.roomName = roomName;
        this.person = person;
    }

    public String toString() {
        return ReflectionToStringBuilder.toString(this);
    }
}

public class ToStirngMain {

    public static void main(String[] args) {
       Person me = new Person("smajima", 52);
       Room myRoom = new Room("dirty room", me);
       
       System.out.println(myRoom);

    }

}