Ten przykład przedstawia sposób użycia elementu danych staticField i fragmentu sondy staticInitializer.
W tym przykładzie sonda śledzi, kiedy są tworzone instancje klasy. Jeśli instancja jest tworzona po upływie ponad jednej sekundy od utworzenia poprzedniej instancji tej klasy, sonda powoduje zapisanie komunikatu dziennika.
Poniżej przedstawiono czynności wykonywane przez tę sondę:
- Przy użyciu definicji pola static sonda tworzy pole static typu Date w każdej sondowanej klasie. Pole static zostanie zainicjowane przez wywołanie metody new Date();.
- We fragmencie staticInitializer sonda ustawia instancję Date w sondowanej klasie (podczas jej ładowania) na czas zerowy: styczeń 1970 r.
- We fragmencie entry sonda sprawdza, kiedy przeprowadzono poprzednią aktualizację i generuje raport, jeśli aktualizacja odbyła się wcześniej niż jedną sekundę wcześniej. Ze względu na reguły celu fragment entry działa tylko w konstruktorach.
- Na koniec sonda zmienia wartość instancji Date na aktualną datę.
Ta sonda korzysta z definicji pola static w celu utworzenia nowego pola static w każdej sondowanej klasie. Dla porównania, użycie fragmentu sondy w zasięgu klasy w celu zadeklarowania pola Date spowoduje utworzenie jednej instancji Date w wygenerowanej klasie zawierającej fragmenty sondy, bez względu na to, względem ilu klas jest stosowana sonda. Tej metody można użyć, jeśli jest konieczne śledzenie opóźnienia między tworzeniem instancji dowolnej sondowanej klasy, a nie śledzenie opóźnienia między tworzeniem instancji wszystkich sondowanych klas.
Sonda ta jest definiowana przez następujące wpisy w edytorze pakietu Probekit:
- Pełny typ Java dla pola static (należy kliknąć prawym przyciskiem myszy opcję Sonda na panelu drzewa, a następnie kliknąć opcję , aby wprowadzić tę wartość):
java.util.Date
- 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 metody: *
- 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 metody: *
- Fragment (należy wybrać opcję Fragment na panelu drzewa, aby wprowadzić te wartości):