Questo esempio descrive l'utilizzo dell'elemento di dati staticField e del frammento probe staticInitializer.
In questo esempio, un 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 registro.
Questo probe utilizza l'elemento di dati staticField per creare un nuovo campo statico in ciascuna delle classi con probe. Diversamente, se si utilizzasse fragmentAtClassScope per dichiarare il campo Date, 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.
Per utilizzare questo codice di esempio, sostituire package="com.sample*" nell'oggetto di destinazione di un pacchetto vero e proprio.
Inoltre, per utilizzare i caratteri & e < in XML, è necessario specificare le entità di carattere & e <, come mostrato nell'esempio.
<?xml version="1.0" encoding="ASCII"?> <probekit> <probe> <target type="include" package="com.sample*" method="<init>" /> <target type="exclude" package="*" /> <staticField type="java.util.Date"/> <fragment type="entry"> <data name="lastInstanceDate" type="staticField"/> <data name="clname"/> <code> java.util.Date d = new java.util.Date(); long now = d.getTime(); long prev = lastInstanceDate.getTime(); if (prev != 0 && prev + 1000 < now) { System.out.println("[" + clname + " instance after > 1 second]"); } lastInstanceDate.setTime(now); </code> </fragment> <fragment type="staticInitializer"> <data name="lastInstanceDate" type="staticField"/> <data name="clname"/> <code> lastInstanceDate.setTime(0); System.out.println("[" + clname + " class loaded]"); </code> </fragment> </probe> </probekit>
Argomento principale: Esempi di Probekit
Riferimenti correlati
Oggetto probe StaticField
Frammento probe staticInitializer