私のJavaクラスには、健全性検査を含む特別な注釈@Assert
が付いた静的メソッドがあります。AspectJ:クラスにstatic初期化子を追加
実際にコードが実行される前にこれらのチェックを実行したいと思います。これらのメソッドを<clinit>
から呼び出すのが最適です。 AspectJを使って同様の動作をさせ、初期コードを修正することなく、どうやって得るのですか?
私のJavaクラスには、健全性検査を含む特別な注釈@Assert
が付いた静的メソッドがあります。AspectJ:クラスにstatic初期化子を追加
実際にコードが実行される前にこれらのチェックを実行したいと思います。これらのメソッドを<clinit>
から呼び出すのが最適です。 AspectJを使って同様の動作をさせ、初期コードを修正することなく、どうやって得るのですか?
AspectJは、既存の静的初期化子を選択して傍受するポイントカット定義を提供しています(staticinitialization(TypePattern)
)。ただし、静的イニシャライザを持たないクラスに静的イニシャライザを追加することはできません。
Johnの答えに追加するだけです。 staticInitialization
ポイントカットでは、static
ブロックが存在する必要はありません。この場合、単純なクラスロード結合ポイントとして機能します。
これは、@Assert
と注釈されたメソッドを呼び出すときになります。
明示的な 'static'ブロックは必要ありませんが、クラスロードジョインポイントとして機能することができます。 –