2011-11-08 11 views
0

私のJavaクラスには、健全性検査を含む特別な注釈@Assertが付いた静的メソッドがあります。AspectJ:クラスにstatic初期化子を追加

実際にコードが実行される前にこれらのチェックを実行したいと思います。これらのメソッドを<clinit>から呼び出すのが最適です。 AspectJを使って同様の動作をさせ、初期コードを修正することなく、どうやって得るのですか?

答えて

1

AspectJは、既存の静的初期化子を選択して傍受するポイントカット定義を提供しています(staticinitialization(TypePattern))。ただし、静的イニシャライザを持たないクラスに静的イニシャライザを追加することはできません。

+0

明示的な 'static'ブロックは必要ありませんが、クラスロードジョインポイントとして機能することができます。 –

1

Johnの答えに追加するだけです。 staticInitializationポイントカットでは、staticブロックが存在する必要はありません。この場合、単純なクラスロード結合ポイントとして機能します。

これは、@Assertと注釈されたメソッドを呼び出すときになります。

関連する問題