3

私は AspectJ を試していますが、カウンターを作成する際に、理解できないものに遭遇しました。コードは次のとおりです。

aspect testaAssociacao perthis(execucoesReceita()){

  pointcut execucoesReceita() : execution(* Receita.*(..));

  int x;

    //constructor
    public testaAssociacao() { x = 0; }
    after(): execucoesReceita(){
      x = x+1;
      System.out.println("x = "+x); 
    }
}

main() には次のものがあります。

  Receita r1 = new Receita("bolo1");
  Receita r2 = new Receita("bolo2");

  r1.adicionaIngrediente(new Ingrediente("FARINHA", 3));
  r1.adicionaIngrediente(new Ingrediente("leite", 1));
  r1.adicionaIngrediente(new Ingrediente("FARINHA", 2));
  r1.adicionaIngrediente(new Ingrediente("leite", 3));

この状況では、出口は次のように表示されます。

x = 1
x = 2
x = 1
x = 2

perthis()オブジェクト Receita によって分離されないように宣言を削除すると、出口は次のようになります。

x = 1
x = 2
x = 3
x = 4
x = 5

操作が 4 回しかない場合に、カウンターが 5 に達した可能性はありますか? main() 関数を考慮しますか、それとも別の時点で実行しますか?

4

0 に答える 0