2012-09-06 6 views
5

私の理解では、..0-Many argsであり、*anyの1つのアークです。これは正しいです?アスペクトのなんらかの意味*

aspectjはargs(..,myArg,..)のような構文をサポートしていますか?

+0

var-argは、Javaの(最後の)最後の引数にすることができます。 – Shark

+0

コンパイラ/インタプリタが渡された引数が実際にはあなたのケースでは 'myArg'だったことを知ることは非常に困難/不可能です。 – climbage

答えて

7

これは、AspectJのサイトからです:http://www.eclipse.org/aspectj/doc/next/progguide/semantics-pointcuts.html

*は除く任意の数の文字を表します ""

..は、任意の数の "。"

更新アクションでAspectJのより - メソッドのシグネチャのため:メソッドのシグネチャで

、ワイルドカード..方法で撮影された引数の任意の種類と数を示すために使用される

*は単一の引数を指定します

+0

しかし、これも: "ワイルドカード" * "の場合は任意の引数が一致し、特殊ワイルドカード" .. "の場合は任意の数の引数が一致します" – MikePatel

+0

はい、そうですそれに応じてメソッドシグネチャの応答も更新されました。 AspectJは '(..、myarg、..)'をサポートしていません。 –

4

他の人が私の前で質問の一部に答えているので、私はただ修正します:

.., bla, ..パラメータblaを変数にバインドすると、一致する型がパラメータリストに複数回出現する場合に複数の一致する組み合わせが存在する可能性があるため、機能しません。例:

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

blabまたはcString値にバインドする必要があります?今アドバイスがある場合はどうするか

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

関連する問題