是否有一个库将以递归方式转储/打印对象属性?我正在寻找类似于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";
}
}
Run Code Online (Sandbox Code Playgroud)
我收到:
ToString $ Outer @ 1b67f74 [intValue = 5
innerValue = ToString $ Inner @ 530daa]
我意识到在我的例子中,我可以覆盖Inner的toString()方法,但在现实世界中,我正在处理我无法修改的外部对象.
toString某些简单类的自动生成方法是好还是坏?
我正在考虑生成类似下面的内容,它采用变量名称并生成一个toString方法,打印名称后跟其值.
private String name;
private int age;
private double height;
public String toString(){
return String.format("Name: %s Age: %d Height %f", name, age, height);
}
Run Code Online (Sandbox Code Playgroud) 我被要求编辑一个java文件,以便它检索一个值.值名称并不重要,但它是SiteCategory.
在Eclipse的帮助下,我能够找到看起来像我正在寻找的方法.
然后我创建了这七行,看看其中一行是否返回了我想要的内容.
System.out.println("1) " + p_objRecord.getSiteCategoryList().toString());
System.out.println("2) " + p_objRecord.getSiteCategoryList().getClass());
System.out.println("3) " + p_objRecord.getSiteCategoryList().getSiteCategory().toString());
System.out.println("4) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).getCategoryDescription());
System.out.println("5) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).toString());
System.out.println("6) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).getCategory().getName());
System.out.println("7) " + p_objRecord.getSiteCategoryList().getSiteCategory(0).getCategory().toString());
Run Code Online (Sandbox Code Playgroud)
这是输出
1)com.webservices.lists.farming.SiteCategoryList@47c7b1f5
2)class com.webservices.lists.farming.SiteCategoryList
3)[Lcom.webservices.lists.farming.SiteCategory; @ 105e924
4)> P align = left>
5)com.webservices.lists.farming.SiteCategory@ca143fc6
6)产品:杂项:瓶子
7)com.webservices.platform.core.RecordRef@78f8dcf1
6号正是我想要的.我花了一些时间才最终达到这一点并找出正确的语法.如果您被要求使用不熟悉的API执行此操作,您将如何找出正确的语法?