2

注釈スタイルを使用してアスペクトをコーディングしようとしています。「回避」アドバイスを作成していますが、アドバイス メソッド内から thisEnclosingJoinPointStaticPart にアクセスする方法が見つからないようです。引数を定義しようとすると、ajc コンパイラからエラーが発生します。

これが私のポイントカットとアドバイスの宣言です。

@Pointcut("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
void invokeOnEDTPointCut()
{/*empty*/}

@Around("invokeOnEDTPointCut(thisEnclosingJoinPointStaticPart)")
public Object invokeOnEDT(final ProceedingJoinPoint thisJoinPoint, thisEnclosingJoinPointStaticPart) throws Throwable
{...}

これがコンパイルに失敗することはわかっています。「やりたい」ことを示すために提供していますが、実行する方法が見つかりません。Web の検索に何時間も費やしましたが、見つけることができる唯一の例は、Before または After のアドバイスであり、この構文を許可しているようです。周りのアドバイスは明らかに異なった振る舞いをしますが、私が見つけたものはそれについて議論していません.

コンパイル時に受け取るエラーは次のとおりです。

[ERROR] ...\aspects\DispatchEDTAspects.java:42:0::0 incompatible number of arguments to pointcut, expected 0 found 1

アドバイスメソッド内から thisEnclosingJoinPointStaticPart にアクセスする方法についてのアイデアはありますか?

4

1 に答える 1

0

どうですか:

@Around("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
        public Object advice(final ProceedingJoinPoint thisJoinPoint, ProceedingJoinPoint.EnclosingStaticPart thisEnclosingJoinPointStaticPart) throws Throwable {
    ...
    }
于 2013-07-04T07:01:15.253 に答える