3.1.1 thisJoinPoint.variables変数 (ローカル変数、クラス変数一覧の取得)
Example of Advice (debug) Code
Object[][] vs = thisJoinPoint.variables;
for(int i=0; i<vs.length; i++){
System.out.println(vs[i][0]+"="+vs[i][1]);
}
(1)thisJoinPoint.variables -- java.lang.Object[][]型
デバッグコード挿入位置に存在する変数の一覧を表す。
thisJoinPoint.variables[i][0] -- String型 変数の名前
thisJoinPoint.variables[i][1] -- Object型 変数の値
thisJoinPoint.variables[i][2] -- String型 変数の宣言文
例:
thisJoinPoint.variables[0][0] = "x"
thisJoinPoint.variables[0][1] = x
thisJoinPoint.variables[0][2] = "local int"
thisJoinPoint.variables[1][0] = "MyClass.i"
thisJoinPoint.variables[1][1] = i
thisJoinPoint.variables[1][2] = "static Integer"
thisJoinPoint.variables[2][0] = "this"
thisJoinPoint.variables[2][1] = this
thisJoinPoint.variables[2][2] = "local MyClass"
thisJoinPoint.variables[3][0] = "this.y"
thisJoinPoint.variables[3][1] = this.y
thisJoinPoint.variables[3][2] = "public final long"
(2)
$writeVariables()
thisJoinPoint.variables の状態を実際の変数に反映させる。
例:
System.out.println(x);//100が出力
thisJoinPoint.variables[0][1] = new Integer(9999);
$writeVariables();
System.out.println(x);//9999が出力
(3)
$readVariables()
実際の変数の値を thisJoinPoint.variables に反映させる。
例:
System.out.println(thisJoinPoint.variables[0][1]);//100が出力
x = 9999;
$readVariables();
System.out.println(thisJoinPoint.variables[0][1]);//9999が出力
