如果要添加不属于特定类别的项目,我必须执行一项警告,除了允许的三个项目之外,不允许添加这些项目......
到目前为止,我能够找到物品并发出警告....但不知道如何阻止它们被添加....
对于Eg。
允许类别鞋子和袜子
但如果我尝试将蔬菜项添加到库存中,它应该给我一个警告说“不允许类别../ nItem将不会添加到库存”.....然后继续下一个项目。 ...
这是我到目前为止所写的......
pointcut deliverMessage() :
call(* SC.addItem(..));
pointcut interestingCalls(String category) :
call(Item.new(..)) && args(*, *, category);
before(String category): interestingCalls(category) {
if(category.equals("Socks")) {
System.out.println("category detect: " + category);
else if(category.equals("Shoes"))
System.out.println("category detect: " + category);
else {
check=true;
System.out.println("please check category " + category);
}
}
答案 0 :(得分:4)
为什么不使用around
方面。然后,如果它们不属于正确的类别,则不进入该方法,因此如果跳过的方法只是进行添加,则会跳过它。
<强>更新强>
以下是Manning Publication的AspectJ In Action中的一个例子。
public aspect ProfilingAspect {
pointcut publicOperation() : execution(public * *.*(..));
Object around() : publicOperation() {
long start = System.nanoTime();
Object ret = proceed();
long end = System.nanoTime();
System.out.println(thisJoinPointStaticPart.getSignature()
+ " took " + (end-start) + " nanoseconds");
return ret;
}
}
所以,如果你想检查是否应该添加该项,如果它是一个允许的类别,那么只需调用proceed
,否则你可能只返回一个空值。