Java /解析Object并将其字段加载到JTree中

时间:2012-03-23 14:48:02

标签: java parsing reflection jtree

对我的问题的简短解释,我需要解析一个对象并将其内容放入一个JTree中。我知道该对象可以包含基本类型的字段,但也可以包含其他对象。我怎样才能实现解析,是我应该使用的反射?我现在不知道。

结构看起来像那样:

-object1
    |
    fieldname1 = 1256
    |
    fieldname2 = 5623
    |
    object2
    |  |
    |  fieldname1 = 154
    |  |
    |  fieldname2 = 190
    |
    object3
       | 

任何帮助将不胜感激。提前谢谢!

2 个答案:

答案 0 :(得分:2)

是的,您应该使用Reflection API来发现对象字段,并填充JTree节点值。

按如下方式递归处理每个对象:

  • 向树中添加节点
  • 处理对象类中声明的字段中的对象(使用Class.getDeclaredFields()
  • 处理来自对象的每个超类中的字段的对象(Class.getDeclaredFields()不返回继承的字段)

答案 1 :(得分:0)

以下是如何获取您正在查找的数据并将其转储到控制台的示例。我对JTree没有经验,所以我无法帮助你。

基本技术

for (Field field : myInstance.getClass().getDeclaredFields()) {
    String name = field.getName();
    value = field.get(myInstance).toString();
    System.out.println(name + ": " + value);
}

错误捕获

将错误捕获结合到此中是个好主意,因为未初始化的字段会导致错误。

for (Field field : myInstance.getClass().getDeclaredFields()) {
    try {
        String name = field.getName();
        String value = "null";
        try {
            value = field.get(myInstance).toString();
        } catch (Exception e) {
            // this probably means the field was null
        }
        System.out.println(name + ": " + value);
    } catch (Exception e) {
        System.out.println("problem with reflection: " + e);
    }
}