これは簡潔なタイトルを作るのは難しいです。とにかくカットがスーパークラスにあり、派生クラスがオーバーライドされているときにポイントカットを2回押すのを避けるには?
、私は親クラスを持っていると想像:
public class Shape {
public Dimensions getDimensions() {
// Does some generic stuff.
}
}
私はgetDimensionsメソッドをオーバーライドし、そこから派生したクラスがあります:私はShape.getDimensions
にポイントカットと様相を作成する場合
public class Circle extends Shape {
public Dimensions getDimensions() {
// Does some stuff.
super.getDimensions();
}
}
をCircle.getDimensions
が呼び出されると、Circle.getDimensions
に1回、super.getDimensions
が1回呼び出されると、ポイントカットが2回実行されます。
ポイントカットはこのようなものになります。@Pointcut("execution(* Shape.getDimensions(..))")
を私は(JoinPoint.getSignature().getDeclaringType().getName()
を使用して)宣言する型の名前を確認するためにアドバイス内のハックを追加しましたが、私はそれがむしろ総見つけると、それは一種のハックのように感じています。私はこれを行うより良い方法がなければならないと考えます。
はありますか?
フォーマットがあまり良くない場合はお詫び申し上げます。初めてここで質問します(私は通常、答えを見つけることができます)。
作品美しく、ありがとう。私はアノテーションスタイルにもっと慣れていますが、キーはcflowbelowコールでした。私がそれを1つのアドバイスに凝縮できるかどうかを判断しようとする過程で、私はこの素敵な付録を見つけました:http://www.eclipse.org/aspectj/doc/next/progguide/ semantics-pointcuts.html – Depressio
私の答えを受け入れてupvotingすることに、事前に感謝します。 ;-) してください。 – kriegaex
私は明らかにそうするために15ポイントが必要です。私は11歳しか持っていません。私を信じて、私は試しました! : – Depressio