如果要添加不属于特定类别的项目,我必须执行一项警告,除了允许的三个项目之外,不允许添加这些项目......
到目前为止,我能够找到物品并发出警告....但不知道如何阻止它们被添加......对于Eg。
允许类别鞋子和袜子
但如果我尝试将蔬菜项添加到库存中,它应该给我一个警告说“不允许类别../ nItem将不会添加到库存”.....然后继续下一个项目。 ...
这是我到目前为止所写的......
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!");
}
}
我知道我没有正确使用周围的建议......
答案 0 :(得分: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!");
}
}
请注意,如果类别与“shoes”或“socks”不同,我们不会调用proceed()方法。