Exemple d'un fragment au niveau de l'étendue de classe

Cet exemple montre comment utiliser le fragment sur toute l'étendue de la classe dans une sonde.

Dans cet exemple, une sonde compte le nombre d'instances créées de toutes les classes dans les packages correspondant au masque générique com.sample* et signale la création de chaque centième instance.

Le fragment de l'étendue de classe déclare un compteur qui apparaît comme champ statique de type int dans la classe où le fragment d'entrée est compilé. Le fragment déclare également un initialiseur statique pour la classe de fragment qui signale le chargement de la sonde. Notez que les éléments dans le fragment de l'étendue de classe sont construits dans la classe de la sonde, et non dans celles auxquelles la sonde s'applique. Pour insérer des zones statiques ou une logique d'initialiseur statique dans des classes auxquelles la sonde s'applique, utilisez des fragments de type staticInitializer, ou définissez un champ statique.

Cette sonde est définie dans l'éditeur Probekit par les entrées suivantes :
  • Code Java pour les fragments d'étendue de classe (sélectionnez Sonde dans le panneau d'arborescence pour entrer cette valeur) :

    static public int entry_counter = 0;
    static int counter = 0;
    static { System.out.println("[fragmentAtClassScope sample probe has loaded.]"); }

  • Cible (pour entrer ces valeurs, sélectionnez Cible dans le panneau d'arborescence, puis cliquez sur Editer) :
    • Type de cible : include
    • Package: com.sample* (Utilisez un nom de package ici.)
    • Classe: *
    • Méthode: <init>
    • Signature: *
  • 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: *
  • Fragment (sélectionnez Fragment dans le panneau d'arborescence pour entrer ces valeurs) :
    • Type de fragment : entry
    • Code Java :

      ++counter;
      if (counter % 100 == 0)
        System.out.println("[" + counter + " instances of classes in com.sample package so far]");