我正在制作一款俄罗斯方块游戏。我目前正在调试游戏,为了做到这一点,我需要看到所有变量的值和变量变量等等。通过反射,我可以通过这样做获得所有的类字段:
try
{
for(Field field : this.getClass().getDeclaredFields())
{
field.setAccessible(true);
System.out.println(field.get(this));
}
}
catch(Exception e)
{
}
我不知道如何获得每个字段对象的所有字段值
您需要做两件事:
- 创建一组可访问的对象。你不希望永远递归地遍历对象图。
- 打印每个对象的值
对于第一个,您需要使用类似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));
}
}
...
}
然后你可以开始打印收集的对象…