Este ejemplo muestra el uso del elemento de datos staticField y del fragmento de sonda StaticInitializer.
En este ejemplo, una sonda hace un seguimiento de cuándo se crean las instancias de una clase. Si una instancia se crea después de más de un segundo de la instancia anterior de dicha clase, la sonda escribe un mensaje de registro.
Esta sonda utiliza staticField para crear un nuevo campo estático en cada clase sondeada. Por comparación, la utilización de fragmentAtClassScope para declarar el campo Date daría como resultado una única instancia de Date que aparece en la clase generada que contiene los fragmentos de sonda, sea cual sea el número de clases a las que se aplica la sonda. Puede hacerlo si desea hacer un seguimiento del retardo entre la creación de instancias de cualquier clase sondeada, en lugar de hacer un seguimiento del retardo entre la creación de instancias de cada clase sondeada.
Para utilizar este código de ejemplo, cambie package="com.sample*" en el objeto de destino para que haga referencia a un nombre de paquete real.
Tenga en cuenta que para utilizar los caracteres & y < en XML, debe especificar las entidades de tipo carácter & y <, como se muestra en el ejemplo.
<?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 + " instancia después de > 1 segundo]"); } lastInstanceDate.setTime(now); </code> </fragment> <fragment type="staticInitializer"> <data name="lastInstanceDate" type="staticField"/> <data name="clname"/> <code> lastInstanceDate.setTime(0); System.out.println("[" + clname + " clase cargada]"); </code> </fragment> </probe> </probekit>
Tema principal: Ejemplos de ProbeKit
Referencia relacionada
El objeto de sonda StaticField
El fragmento de sonda staticInitializer