return 语句在 AspectJ 通知中做什么?

What do return statements do in an AspectJ advice?

以下摘自 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 建议中的作用 - 为什么它(需要?)在那里,如果没有它会发生什么?

基本上是"return form setX()"在方法体执行之前吗?

有手册页解释吗?

你的代码检查这个:

(!p.assertX(x))

只要上面的逻辑表达式为真,就会执行其{ }块中的代码,包括return;return 语句的要点是确保函数停止并且不会执行进一步的代码。这是一种常见的方法,以防出现错误。

为了完成@LajosArpad 的回答,before 建议只能通过抛出异常来改变流程。在保留相同流语义的同时可以防止调用建议方法的唯一建议是 around,但在这种情况下它需要 return 本身(如果 return 类型不是 void,当然)。