2012-01-11 40 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)爲解決方案的開始 - 我比較熟悉的註釋方法比AspectJ語言,但基本上你需要連接點的簽名或者withinTypeName值。 – 2012-01-11 14:29:46

回答

1

您應該使用thisJoinPoint得到這些類型的信息。這段代碼有訣竅。

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