Przykład sondy z fragmentem w zasięgu klasy

Ten przykład ilustruje sposób użycia fragmentu w zasięgu klasy w sondzie.

W tym przykładzie sonda zlicza liczbę utworzonych instancji wszystkich klas z pakietów pasujących do wzorca com.sample*, a następnie informuje o każdym co setnym utworzeniu instancji.

Fragment w zasięgu klasy deklaruje licznik widoczny jako pole static typu int w klasie, do której kompilowany jest fragment entry. Fragment ten deklaruje również inicjator static dla klasy fragment, która zgłasza załadowanie sondy. Należy pamiętać, że elementy fragmentu w zasięgu klasy są wbudowane w wygenerowaną klasę sondy, a nie w klasy, względem których ta sonda jest stosowana. Aby wstawić pola static lub logikę inicjatora static do klas, względem których jest stosowana sonda, należy użyć fragmentów sond typu staticInitializer albo zdefiniować pole static.

Sonda ta jest definiowana przez następujące wpisy w edytorze pakietu Probekit:
  • Kod Java dla fragmentu w zasięgu klasy (należy wybrać opcję Sonda na panelu drzewa, aby wprowadzić tę wartość):

    static public int entry_counter = 0;
    static int counter = 0;
    static { System.out.println("[Sonda próbna fragmentAtClassScope została załadowana.]"); }

  • Cel (aby wprowadzić te wartości, należy wybrać opcję Cel na panelu drzewa i kliknąć przycisk Edytuj):
    • Typ celu: include
    • Pakiet: com.sample* (tutaj należy użyć faktycznej nazwy pakietu)
    • Klasa: *
    • Metoda: <init>
    • Sygnatura: *
  • Cel (aby wprowadzić te wartości, należy kliknąć opcję Dodaj, a następnie przycisk Edytuj na panelu edycji):
    • Typ celu: exclude
    • Pakiet: *
    • Klasa: *
    • Metoda: *
    • Sygnatura: *
  • Fragment (należy wybrać opcję Fragment na panelu drzewa, aby wprowadzić te wartości):
    • Typ fragmentu: entry
    • Kod Java:

      ++counter;
      if (counter % 100 == 0)
        System.out.println("[Jak dotąd " + counter + " instancji klas w pakiecie com.sample]");

Informacje pokrewne
Fragmenty sond w zasięgu klas