Cet exemple montre comment utiliser l'élément de données staticField et le fragment d'analyse StaticInitializer.
Dans cet exemple, un composant d'analyse effectue le suivi de la création d'instances pour une classe. Si une instance est créée plus d'une seconde après la précédente de cette classe, le composant d'analyse écrit un message dans le journal.
Cet composant d'analyse utilise staticField pour créer une zone statique dans chaque classe analysée. Par comparaison, l'utilisation de fragmentAtClassScope pour déclarer la zone Date fait apparaître une instance Date dans la classe générée qui contient les fragments d'analyse, quel que soit le nombre de classes auxquelles le composant d'analyse s'applique. Vous pouvez procéder de la sorte pour suivre le délai entre la création d'instances d'une classe analysée au lieu de chacune d'elles.
Pour employer cet exemple de code, modifiez package="com.sample*" dans l'objet cible afin de faire référence au nom de package réel.
Pour utiliser les caractères & et < dans XML, vous devez indiquer les entités de caractères & et <, comme illustré dans l'exemple :
<?xml version="1.0" encoding="ASCII"?>
<probekit>
<probe>
<target type="include" package="com.sample*" method="<init>" />
<target type="exclude" package="*" />
<staticField type="java.util.Date"/>
<fragment type="entry">
<data name="lastInstanceDate" type="staticField"/>
<data name="clname"/>
<code>
java.util.Date d = new java.util.Date();
long now = d.getTime();
long prev = lastInstanceDate.getTime();
if (prev != 0 && prev + 1000 < now) {
System.out.println("[" + clname + " instance après > 1 seconde]"); } lastInstanceDate.setTime(now);
</code>
</fragment>
<fragment type="staticInitializer">
<data name="lastInstanceDate" type="staticField"/>
<data name="clname"/>
<code>
lastInstanceDate.setTime(0);
System.out.println("[" + clname + " classe chargée]");
</code>
</fragment>
</probe>
</probekit>
Rubrique parent :
Exemples Probekit
Référence associée
Objet d'analyse StaticField
Fragment d'analyse staticInitializer