この例は、FragmentAtClassScope プローブ・フラグメントの使用方法を示しています。
この例では、プローブが「com.sample*」というワイルドカード・パターンと一致するパッケージ内のすべてのクラスでこれまでに作成されたインスタンスの数をカウントし、100 個のインスタンス作成ごとに報告します。
「fragment at class scope」で、entry フラグメントがコンパイルされるクラス内に int 型の静的フィールドとして出力されるカウンターを宣言します。このフラグメントでは、プローブがロードされたことを報告する fragment クラスの静的イニシャライザーも宣言します。fragmentAtClassScope セクションの項目は、プローブが適用されるクラスではなく、生成されたプローブ・クラスにビルドされます。プローブが適用されるクラスに静的フィールドまたは静的イニシャライザーの論理を挿入するには、staticField オブジェクトと staticInitializer オブジェクトを使用します。
このサンプル・コードを使用するには、ターゲット・オブジェクトの package="com.sample*" で、実際のパッケージ名を参照するように変更してください。
XML で & と < の文字を使用するには、文字エンティティー & と < をこの例に示すように指定する必要があります。
<?xml version="1.0" encoding="ASCII"?> <probekit> <probe> <fragmentAtClassScope> static public int entry_counter = 0; static int counter = 0; static { System.out.println("[fragmentAtClassScope sample probe has loaded.]"); } </fragmentAtClassScope> <target type="include" package="com.sample*" method="<init>" /> <target type="exclude" package="*" /> <fragment type="entry"> <code> ++counter; if (counter % 100 == 0) System.out.println("[" + counter + " instances of classes in com.sample package so far]"); </code> </fragment> </probe> </probekit>
親トピック: Probekit の例