AspectJ - 模式签名

时间:2016-05-12 20:08:54

标签: java aspectj aspect

我正在研究自动代码生成(AspectJ),我对以下模式签名之间的差异感到困惑:

  1. 的javax .. *模型
  2. 的javax .. *型号+
  3. 的javax。*型号
  4. 的javax。*模型()
  5. 这个答案是否正确?

    1. 以模式结束的方法,在javax包下定义。
    2. 以javax包下的Model结尾的任何子类型的方法。
    3. 以从javax类继承的Model结束的方法。
    4. 以不带参数的javax类继承的Model结束的方法。
    5. 或它们之间没有区别??

      谢谢,

1 个答案:

答案 0 :(得分:0)

这实际上取决于你使用它们的位置。他们自己可以根据您使用的切入点识别类型,方法或字段。

以下是不同语法的说明,以及它们与您的问题的关系:

  1. 输入poincuts

      

    [annotations] [modifiers] type_name

    • javax..*Model将匹配Model包中名称以javax结尾的任何类型(即:class,interface或enum)。
    • javax..*Model+将匹配Model包中名称以javax结尾的类型的任何子类型。
  2. 方法poincuts

      

    [annotations] [modifiers] return_type method_name(arguments)

    • * javax..*Model.*(..)将匹配Model包中名称以javax结尾的类中声明的任何方法。