我正在尝试开发一个模拟应用程序。我需要监控模拟环境中的所有 java 对象。在模拟执行期间,用户定义的对象方法在每个滴答中定期调用。我想跟踪所有对象的所有字段值和方法返回值。例如,
public class Person{
int energy,x,y;
public Person(){
this.energy = new Random().nextInt(0,10);
}
@ScheduledMethod(start=1, interval=1)
void step(){
energy--;
// move random x,y
move();
}
void move(){
this.x= new Random().nextInt(1,50);
this.y = new Random().nexInt(1,50);
} }
在我的模拟器中,每个人在每个滴答声中的能量值都被跟踪并保存,直到人死为止。模拟开发人员通常使用随机函数,因此两次调用方法可能不会返回与 Person 的 x,y 值相同的值。
通过使用反射 API,我可以动态访问字段值(可以访问人的能量值。)但我需要访问方法返回值(人的 x,y 值在每次移动调用中都会更改)。当我使用反射调用方法时,该方法的执行会加倍。所以,我需要以不同的方式处理方法调用。
我提到我需要一个像 JAVA Debugging API 这样的监控机制。在模拟执行期间我如何做到这一点。我需要观察所有字段和方法返回值,例如在执行中调试代码。
任何想法。
感谢您的想法