0

特定のカテゴリに属さないアイテムが追加されている場合は、そのような追加が許可および禁止されている3つを除いて、警告を発行するポリシーを適用する必要があります。

これまでのところ、アイテムを見つけて警告を出すことはできますが、追加を停止する方法がわかりません。

許可されるカテゴリ靴と靴下

しかし、野菜アイテムをインベントリに追加しようとすると、「カテゴリは許可されていません../nアイテムはインベントリに追加されません」という警告が表示されます.....次に次のアイテムに進みます....

これは私がこれまでに書いたものです.....

import org.aspectj.lang.*;

public aspect a8 {

  boolean check;

    pointcut deliverMessage(): call(* ShoppingCart.addItem(..));

    pointcut interestingcalls(String categorie): call(Item.new(..)) && args(*, *, categorie);

      before(String categorie): interestingcalls(categorie)
       { 
       if(categorie.equals("Shoes"))
        {        
       System.out.println("categorie detect:" +categorie);
        }
        else if(categorie.equals("socks"))
        {        
       System.out.println("categorie detect:" +categorie);
        }
        else
        {
        check=true;
        around(categorie);
        System.out.println("please check categorie" +categorie);
        }
    }

    around(String categorie): interestingcalls(categorie) {
            System.out.println("Start! "+categorie);
            proceed(categorie);
            System.out.println("End!");
    }
}

私は周りのアドバイスを正しく使用していないことを知っています...

4

1 に答える 1

0

あなたがおそらく望んでいるのは、次のようなものです。

public aspect CartAspect {

    pointcut checkAdd(String categorie) : call (void ShoppingCart.addItem(*)) && args(categorie);

    void around(String categorie) : checkAdd(categorie) {
        System.out.println("Start! " + categorie);
        if (categorie.equals("shoes")) {
            System.out.println("categorie detect:" + categorie);
            proceed(categorie);
        } else if (categorie.equals("socks")) {
            System.out.println("categorie detect:" + categorie);
            proceed(categorie);
        } else {
            System.out.println("please check categorie " + categorie);
        }
        System.out.println("End!");
    }

}

カテゴリが「靴」または「靴下」と異なる場合は、proceed()メソッドを呼び出さないことに注意してください。

于 2011-05-19T13:58:31.897 に答える