获取java程序中的所有字段值
我正在制作一个俄罗斯方块游戏。我目前正在调试游戏,为了做到这一点,我需要看到所有变量的值和变量等等。通过反射,我可以通过以下操作获得所有a类字段:获取java程序中的所有字段值,java,reflection,Java,Reflection,我正在制作一个俄罗斯方块游戏。我目前正在调试游戏,为了做到这一点,我需要看到所有变量的值和变量等等。通过反射,我可以通过以下操作获得所有a类字段: try { for(Field field : this.getClass().getDeclaredFields()) { field.setAccessible(true); System.out.println(field.get(this)); } } catch(Exception e
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 ();
...
}
要遍历对象,可以使用递归函数(它更简单,但有堆栈限制):
然后您可以开始打印收集的对象…要进行调试,请使用调试器,它将允许您逐行遍历代码并递归查看所有变量和对象。System.out.println是穷人的调试器。我想这可能行得通,但我需要的是所有字段值,以便我可以在屏幕上显示崩溃报告,而不是在您运行服务并希望能够记录生产状态时。字段值是什么意思?程序中源自我调用methodAn IdentityHashSet的类更合适。另外,getDeclaredFields()不包括继承的字段+不过我不想谢谢你。非常感谢你的建议,我本应该自己做这件事的
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));
}
}
...
}