In questo esempio viene mostrato l'uso dell'elemento di dati staticField e del frammento di analisi StaticInitializer.
In questo esempio, un'analisi tiene traccia del momento in cui le istanze di una classe vengono create. Se un'istanza viene creata più di un secondo dopo l'istanza precedente di tale classe, l'analisi scrive un messaggio di registrazione.
Questa analisi utilizza staticField per creare un nuovo campo statico in ogni classe analizzata. Mentre, utilizzando fragmentAtClassScope per dichiarare il campo Date dovrebbe creare una singola istanza di Date che appare nella classe generata che contiene i frammenti dell'analisi, a prescindere dal numero di classi alle quali viene applicata l'analisi. È possibile effettuare questa operazione se si desidera tenere traccia del ritardo tra la creazione delle istanze di qualsiasi classe analizzata invece del ritardo tra la creazione delle istanze di ogni classe analizzata.
Per utilizzare questo codice di esempio, modificare package="com.sample*" nell'oggetto di destinazione in modo che faccia riferimento al nome di un pacchetto effettivo.
Tenere presente che per utilizzare i caratteri & e < in XML, è necessario specificare le entità di carattere & e <, come indicato 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 Probekit
Riferimenti correlati
Oggetto di analisi StaticField
Frammento di analisi staticInitializer