-1

我正在构建俄罗斯方块游戏。我目前正在调试游戏,为了做到这一点,我需要查看所有变量和变量变量的值等等。通过反射,我可以通过以下方式获得所有类字段:

try
{
    for(Field field : this.getClass().getDeclaredFields())
    {
        field.setAccessible(true);
        System.out.println(field.get(this));
    }
}
catch(Exception e)
{   
}

我不知道如何获取每个字段对象的所有字段值。

4

1 回答 1

2

您需要做两件事:

  1. 创建一组可达对象。您不想永远递归地遍历您的对象图。
  2. 打印每个对象的值。

对于第一个,您需要使用以下内容IdentityHashMap

import java.util.IdentityHashMap;

class MyObjectCache
{
    final IdentityHashSet objects = new IdentityHashSet ();
    ...
}

要遍历对象,您可以使用递归函数(它更简单,但有堆栈限制):

class MyObjectCache
{
     ....
     void registerObject(Object o)
     {
         if (objects.contains(o))
         {
             return;
         }

         objects.add(o);
         for(Field field : o.getClass().getDeclaredFields())
         {
             field.setAccessible(true);
             registerObject(field.get(o));
         }
    }
    ...
}

然后你就可以开始打印收集的对象了……

于 2013-04-20T21:40:18.150 回答