0
我有這樣一個抽象方面:AspectJ的 - 不能覆蓋的切入點 - 參數類型不匹配
public abstract aspect GenericAspect<T> {
public abstract T createT(Object[] args);
abstract pointcut callMethod(Object[] args);
T around(Object[] args) : callMethod(args) {
return createT(args);
}
}
而且我想這個方面延伸到另外一個抽象方面只覆蓋抽象切入點。就像下面的例子(其中foo是一個接口):
但是我有這樣的編譯錯誤:
can't override pointcut GenericAspect.callMethod(java.lang.Object[]) with pointcut FooAspect.callMethod(java.lang.Object[]) parameter don't match
我怎樣才能解決這個問題呢?
謝謝,它爲我工作。另一個可能的變體是用'Object [] args = thisJoinPoint.getArgs();' – EstevaoLuis
從around建議中獲取args,但是由於需要遍歷由'getArgs'返回的'Object []' 。在你的例子中,你可以通過Object [] methodArgs =(Object [])thisJoinPoint.getArgs()[0];'獲得自己的'Object []'作爲第一個方法參數。我更喜歡沒有鑄造的更安全的解決方案。它還具有將切入點匹配限制在真正具有一個'Object''參數的方法的優點。不使用'args()',而只使用'getArgs()'意味着if-else,迭代,加上大量的字節碼在不需要的地方編織。 – kriegaex