我正在构建俄罗斯方块游戏。我目前正在调试游戏,为了做到这一点,我需要查看所有变量和变量变量的值等等。通过反射,我可以通过这样做得到所有类字段:
try
{
for(Field field : this.getClass().getDeclaredFields())
{
field.setAccessible(true);
System.out.println(field.get(this));
}
}
catch(Exception e)
{
}
我不知道如何获取每个字段对象的所有字段值。
答案 0 :(得分: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));
}
}
...
}
然后你可以开始打印收集的对象......