within() はパッケージ内の実行にのみ一致するため機能しませんが、明示的に宣言されていない限り、 toString() メソッドを継承しています。
編集:見てみましたが、cflowも機能しません。ロード時のウィービングなしにこれを行う別の方法はわかりませんが、これにはtoString() へのすべての呼び出しをログに記録する必要があり、これは非常に悪い考えです。元のポイントカットが機能するように、すべてのメソッドでreturn super.toString()を使用して toString() を宣言する方がおそらくはるかに優れています(そして、 toString() が呼び出されない場合は何も失われません)。
このアプローチを追求することに決めた場合は、ロード時の織り込みを開始するためのaspectj ドキュメントのセクションがあります。
更新: もう 1 つのオプションは、Eclipse のDetail Formattersを使用することです。これらを使用すると、デバッグ目的で toString() メソッドを装飾できます。
元の回答: cflowを使用して、toString() の制御フロー内の任意の結合ポイントに一致させることができます。これを確認できていないことに注意してください。構文を確認してください(確かに思い出すことはできませんが、call()ではなく実行()である必要があるかもしれません)。例えば:
public pointcut myToString() : cflow(call(String mypackage.*.toString()));
もう 1 つの点として、System.out 呼び出しの追加に注意し、ロギング フレームワークの使用を検討してください。