Eksemplet illustrerer brugen af dataelementet staticField og probefragmentet
staticInitializer.
I eksemplet holder proben styr på, hvornår der oprettes forekomster af en klasse. Hvis
der oprettes en forekomst mere end ét sekund efter den forrige forekomst i den pågældende
klasse, skriver proben en logmeddelelse.
Proben udfører følgende:
- Ved hjælp af
definitionen af det statiske felt opretter proben et statisk felt af typen Dato i
alle probede klasser. Det statiske felt initialiseres med kaldet new Date();.
- I fragmentet staticInitializer indstiller proben
datoforekomsten for en probet klasse til "time zero" (januar 1970), når det indlæses.
- I fragmentet entry kontrollerer proben, om den forrige
opdatering er blevet udført, og udsender en rapport, hvis opdateringen blev udført for
mere end et sekund siden. Fragmentet entry udføres kun i konstruktørerne på grund
af målreglerne.
- Til slut opdaterer proben værdien for datoforekomsten til "now."
Proben anvender den statiske feltdefinition til at oprette et nyt statusfelt i alle
probede klasser. Til sammenligning vil brug af et fragment ved klasseomfang til
erklæring af feltet Dato resultere i en enkelt forekomst, hvor Dato vises i den
genererede klasse, som indeholder probefragmenter - uanset hvor mange klasser proben
anvendes på. Det kan du gøre, hvis du vil spore tidsforskydningen mellem oprettelsen af
forekomster af en vilkårlig probet klasse i stedet for at spore tidsforskydningen mellem
oprettelsen af hver enkelt probet klasse.
Proben defineres af følgende indgange i Probekit Editor:
-
Fuldstændig Java-type til statisk felt (højreklik på
Probe i delvinduet med træstrukturen, klik derefter
på for at angive denne værdi):
java.util.Date
- Mål (hvis du vil angive disse
værdier, skal du vælge Mål i delvinduet med træstrukturen
og derefter klikke på Redigér):
- Måltype: include
- Pakke: com.sample* (brug et rigtigt pakkenavn her).
- Klasse: *
- Metode: <init>
- Metodesignatur: *
- Mål (hvis du vil angive disse
værdier, skal du klikke på Tilføj, derefter
Redigér i redigeringsvinduet):
-
Måltype: exclude
- Pakke: *
- Klasse: *
- Metode: *
- Metodesignatur: *
- Fragment (vælg Fragment
i delvinduet med træstrukturen for at angive disse værdier):