シミュレーションアプリケーションを開発しようとしています。シミュレーション環境ですべての 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);
} }
私のシミュレーターでは、人が死ぬまでの各ティックの各人のインスタンスのエネルギー値が追跡され、保存されます。シミュレーション開発者は通常、ランダム化された関数を使用するため、メソッドを 2 回呼び出しても、Person の x、y 値のように同じ値が返されない場合があります。
リフレクション API を使用することで、フィールド値に動的にアクセスできます (人のエネルギー値にアクセスできます)。ただし、メソッドの戻り値にアクセスする必要があります (人の x、y 値は、移動の呼び出しごとに変更されます)。リフレクションを使用してメソッドを呼び出すと、メソッドの実行が2回行われます。したがって、メソッド呼び出しを別の方法で処理する必要があります。
JAVA Debugging API のような監視メカニズムが必要だと言います。シミュレーションの実行中にそれを行う方法.実行中のコードのデバッグなど、すべてのフィールドとメソッドの戻り値を監視する必要があります。
何か案が。
アイデアをありがとう