Cet exemple montre comment utiliser l'élément de données
staticField et le fragment de sonde staticInitializer.
Dans cet exemple, une sonde 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, la sonde écrit un message dans le journal.
Voici l'action de la sonde :
- Grâce à la définition de champ statique, la sonde crée un champ statique de type Date dans chaque classe sondée. Ce champ statique est alors initialisé en appelant new Date();.
- Dans le fragment staticInitializer, la sonde définit l'instance Date d'une classe sondée
comme "temps zéro" (janvier 1970) à son chargement.
- Dans le fragment entry, la sonde vérifie la date de la mise à jour précédente, et rédige un rapport si cette mise à jour remonte à plus d'une seconde. (A cause des règles de la cible, le fragment entry ne fonctionne que dans les constructeurs.)
- Enfin, la sonde met à jour
la valeur de l'instance Date qui passe à "maintenant".
La sonde utilise une définition de champ statique pour créer un nouveau champ statique dans chaque classe sondée. Par comparaison, utiliser une étendue de fragment de classe pour déclarer le champ Date ne ferait apparaître qu'une seule instance de Date dans la classe générée qui détient les fragments, quel que soit le nombre de classes auxquelles la sonde est appliquée. Vous pouvez procéder
de la sorte pour suivre le délai entre la création d'instances d'une
classe sondée au lieu de chacune d'elles.
Cette sonde est définie dans l'éditeur Probekit par les entrées suivantes :
- Type Java entièrement qualifié pour champ statique (clic droit sur Sonde dans le panneau d'arborescence, puis clic sur pour entrer cette valeur) :
java.util.Date
- Cible (pour entrer ces valeurs, sélectionnez Cible dans le panneau d'arborescence, puis cliquez sur Editer) :
- Type de cible : include
- Module: com.sample* (Utilisez un nom de package ici.)
- Classe: *
- Méthode: <init>
- Signature de méthode: *
- Cible (pour entrer ces valeurs, cliquez sur Ajouter,
puis sur Editer dans le panneau d'édition) :
- Type de cible : exclude
- Module: *
- Classe: *
- Méthode: *
- Signature de méthode: *
- Fragment (sélectionnez Fragment dans le panneau d'arborescence pour entrer ces valeurs) :