【问题标题】:What do .. and * mean in aspectj..和*在aspectj中是什么意思
【发布时间】:2012-09-06 15:11:50
【问题描述】:

我的理解是..0-Many args,*any 名称的一个arg。它是否正确?

aspectj 是否支持args(..,myArg,..) 之类的语法?

【问题讨论】:

  • var-arg 只能是 Java 中的最后一个参数(在末尾)。
  • 编译器/解释器很难/不可能知道在您的情况下传递的参数实际上是myArg

标签: java annotations aspectj


【解决方案1】:

来自 AspectJ 网站:http://www.eclipse.org/aspectj/doc/next/progguide/semantics-pointcuts.html

* 表示除“.”以外的任意数量的字符

..代表任意数量的字符,包括任意数量的“.”

更新 来自 AspectJ in Action - 用于方法签名:

在方法签名中,通配符 .. 用于表示方法采用的任何类型和数量的参数

* 指定单个参数

【讨论】:

  • 还有这样的:“如果是“*”通配符,那么任何参数都会匹配,如果是特殊通配符“..”,那么任何数量的参数都会匹配”跨度>
  • 是的,你是对的,我也相应地更新了方法签名的答案。 AspectJ 不支持(.., myarg, ..),但不知道为什么。
【解决方案2】:

其他人已经回答了我面前的部分问题,所以我只会修改:

.., bla, .. 不起作用,因为如果将参数bla 绑定到变量,则可能存在多个匹配组合,以防匹配类型在参数列表中多次出现。示例:

void foo(int a, String b, String c, File d)

现在如果建议是:

before(String bla) : call(void foo(.., bla, ..)) && args(bla)

应该将bla 绑定到bcString 值吗?

【讨论】:

    猜你喜欢
    • 2016-02-28
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 2016-08-17
    • 2010-12-28
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多