以下是AspectJ example的摘录:
class Point {
int x, y;
public void setX(int x) { this.x = x; }
// ...
}
aspect PointAssertions {
private boolean Point.assertX(int x) {
return (x <= 100 && x >= 0);
}
// ...
before(Point p, int x): target(p) && args(x) && call(void setX(int)) {
if (!p.assertX(x)) {
System.out.println("Illegal value for x"); return;
}
}
// ...
}
有人可以请我澄清一下return;
声明在before
建议中的作用 - 它为什么(需要?)以及没有它会发生什么?
在执行方法体之前,它基本上会“返回setX()
”吗?
是否有手册页解释它?
答案 0 :(得分:2)
要完成@LajosArpad的答案,before
建议只能通过抛出异常来改变流程。唯一可以阻止在保留相同流语义的同时调用建议方法的建议是around
,但在这种情况下它需要返回一些东西(当然,如果返回类型不是void
)。
答案 1 :(得分:1)
您的代码会检查:
(!p.assertX(x))
只要上面的逻辑表达式为真,就会执行{ }
块中的代码,包括return;
。 return
语句的要点是确保函数停止,不再执行任何代码。如果出现错误,这是一种常见的方法。