Questo esempio illustra come utilizzare l'elemento dati staticField e il frammento probe staticInitializer.
In questo esempio, il probe tiene traccia del momento in cui vengono create le istanze di una classe. Se un'istanza
di una classe viene creata più di un secondo dopo l'istanza precedente, il probe scrive un messaggio di log.
Di seguito vengono riportate le operazioni compiute dal probe:
- Utilizzando
la definizione di campo statico, il probe crea un campo statico di tipo Data in tutte le classi con probe. Il campo statico verrà inizializzato richiamando new Date();.
- Nel frammento staticInitializer, il probe imposta l'istanza di Date di una classe con probe su "time zero" (gennaio 1970) al momento del caricamento.
- Nel frammento entry, il probe controlla quando è stato eseguito l'ultimo
aggiornamento e produce un prospetto se l'aggiornamento è stato eseguito più di un secondo prima. A causa delle regole della destinazione, il frammento entry viene eseguito solo nei costruttori.
- Infine, il probe aggiorna l'istanza di Date su "now."
Il probe utilizza la definizione di campo statico per creare un nuovo campo statico in
ciascuna delle classi con probe. Diversamente, se per dichiarare il campo
Date, si utilizzasse un frammento nell'ambito della classe, una singola istanza di Date
comparirebbe nella classe generata che contiene i frammenti probe, indipendentemente dal
numero di classi a cui il probe è stato applicato. È possibile adottare questo approccio se si desidera tener
traccia dell'intervallo di tempo tra una creazione di istanza e l'altra di tutte le classi con probe, piuttosto
che tener traccia del medesimo intervallo per ciascuna delle classi con probe.
Questo probe è definito dalle seguenti voci nell'editor Probekit:
- Tipo Java completo per il campo statico
(per immettere questo valore, selezionare Probe nel
riquadro della struttura ad albero, quindi scegliere ):
java.util.Date
- Destinazione (per immettere questi valori, selezionare
Destinazione nel riquadro della struttura ad albero, quindi scegliere
Modifica):
- Tipo di destinazione: include
- Pacchetto: com.sample* (Utilizzare il nome di
un pacchetto esistente).
- Classe: *
- Metodo: <init>
- Firma metodo: *
- Destinazione (per immettere questi valori, scegliere
Aggiungi, quindi Modifica nel riquadro di modifica):
- Tipo di destinazione: exclude
- Pacchetto: *
- Classe: *
- Metodo: *
- Firma metodo: *
- Frammento (per immettere questi valori, selezionare Frammento nel
riquadro della struttura ad albero):