转储Java对象的属性

14 浏览
0 Comments

转储Java对象的属性

有没有一个库可以递归地转储/打印对象的属性?我正在寻找类似于Firebug中的console.dir()函数的东西。

我知道commons-lang的ReflectionToStringBuilder,但它不会递归进入一个对象。换句话说,如果我运行以下代码:

public class ToString {
    public static void main(String [] args) {
        System.out.println(ReflectionToStringBuilder.toString(new Outer(), ToStringStyle.MULTI_LINE_STYLE));
    }
    private static class Outer {
        private int intValue = 5;
        private Inner innerValue = new Inner();
    }
    private static class Inner {
        private String stringValue = "foo";
    }
}

我会得到以下输出:

ToString$Outer@1b67f74[
  intValue=5
  innerValue=ToString$Inner@530daa
]

我意识到在我的示例中,我可以重写Inner的toString()方法,但在现实世界中,我处理的是无法修改的外部对象。

0