Este ejemplo muestra cómo utilizar el elemento de datos staticField y el
fragmento de sonda staticInitializer.
En este ejemplo, la 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 anotaciones.
Esta sonda hace lo siguiente:
- Utilizando la
definición de campo estático, la sonda crea un campo estático de tipo Date en
cada clase sondeada. El campo estático se inicializará llamando a new Date();.
- En el fragmento staticInitializer, la sonda establece
la instancia Date de una clase sondeada a la "hora cero" (Enero de 1970) cuando se
carga.
- En el fragmento entry, la sonda comprueba cuándo se
ha realizado la actualización anterior y emite un informe si la actualización se ha
realizado hace más de un segundo. (Debido a las normas de destino, el fragmento
entry sólo se ejecuta en constructores).
- Finalmente, la sonda actualiza el valor de la instancia Date a
"now" (ahora).
La sonda utiliza la definición de campo estático para crear un nuevo campo
estático en cada clase
sondeada. Por comparación, la utilización de un fragmento en el ámbito de clase 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.
Esta sonda se define mediante las siguientes entradas en el editor de
Probekit:
- Tipo Java totalmente calificado
para campo estático (pulse Sonda con el botón
derecho del ratón en el panel de árbol y pulse
para especificar este valor):
java.util.Date
- Destino (para especificar estos
valores, seleccione Destino en el panel de árbol y pulse
Editar):
- Tipo
destino: include
- Paquete:
com.sample* (aquí debe utilizar un nombre de paquete real).
- Clase: *
- Método: <init>
- Signatura de método: *
- Destino (para especificar estos
valores, pulse Añadir y luego
Editar en el panel de árbol):
- Tipo destino: exclude
- Paquete: *
- Clase: *
- Método: *
- Signatura de método: *
- Fragmento (seleccione
Fragmento en el panel de árbol para especificar estos
valores):