我的理解是,
aspectj 是否支持像
..
表示可以有零个或多个参数,而 *
表示可以有一个任意名称的参数。这样说对吗?aspectj 是否支持像
args(..,myArg,..)
这样的语法呢?..
表示可以有零个或多个参数,而 *
表示可以有一个任意名称的参数。这样说对吗?args(..,myArg,..)
这样的语法呢?*
表示除"."外的任意数量字符
..
表示包括任意数量的"."在内的任意数量字符。
更新
从AspectJ in Action - 对于方法签名:*
表示一个单独的参数。(.., myarg, ..)
,我也不确定为什么。 - Biju Kunjummen其他人已经回答了部分问题,所以我只想修改一下:
.., bla, ..
不能起作用,因为如果将参数bla
绑定到一个变量上,当匹配类型在参数列表中出现多次时,可能会有几个匹配的组合。例如:
void foo(int a, String b, String c, File d)
现在的问题是:
before(String bla) : call(void foo(.., bla, ..)) && args(bla)
bla
应该绑定到b
的String
值还是c
的String
值?
myArg
。 - Mike Park