2012-01-11 12 views
2

私は正常にこのコードで@MyAnnotationとクラスの静的初期化を傍受しています:のAspectJ staticinitalization

public aspect SomeAspect { 
    pointcut printClassName() : staticinitialization(@MyAnnotation *); 
    after() : printClassName() { 
     System.out.println(getClass().getName());   
    } 
} 

質問です:どのように私は、ロードされたクラスの名前を得るのですか?上記のコードでは、ロードされるクラスの名前ではなく、アスペクトクラスの名前が表示されます。

おかげで、 テオ

+0

ソリューションの開始を参照してください[この回答](http://stackoverflow.com/questions/7382464/aspectj-syntax-for-after-staticinitialization) - 注釈付き - 私より身近しかし、基本的には、ジョインポイントのシグネチャ、またはwithinTypeName値が必要です。 –

答えて

1

あなたはこれらの情報の種類を取得するためにthisJoinPointを使用する必要があります。このコードはトリックです。

after(): printClassName(){ 
     System.out.println(thisJoinPoint.getSignature().getDeclaringTypeName()); 
    }