获取所有字段值java程序



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

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

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

您需要做两件事:

  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));
         }
    }
    ...
}

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

相关内容

  • 没有找到相关文章