Este exemplo demonstra a utilização do item de dados staticField e do fragmento de probe StaticInitializer.
Neste exemplo, uma probe monitora quando as instâncias de uma classe são criadas. Se uma instância for criada mais de um segundo após a instância anterior dessa classe, a probe grava uma mensagem de log.
Esta probe utiliza staticField para criar um novo campo estático em cada classe com probe. Por comparação, a utilização de fragmentAtClassScope para declarar o campo Date resultaria no aparecimento de uma única instância de Date na classe gerada que mantém os fragmentos da probe, não importando a quantas classes a probe seja aplicada. Isso pode ser feito se você desejar monitorar o retardo de tempo entre a criação de instâncias de qualquer classe com probe, em vez de monitorar o retardo entre a criação das instâncias de cada classe com probe.
Para utilizar esse código de exemplo, altere package="com.sample*" no objeto de destino para referir ao nome de um pacote real.
Note que para utilizar os caracteres & e < no XML, é necessário especificar as entidades dos caracteres & e <, como mostrado no exemplo.
<?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 + " instância após > 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("[Classe " + clname + " carregada]"); </code> </fragment> </probe> </probekit>
Tópico Pai: Exemplos do Probekit
Referências Relacionadas
O Objeto StaticField da Probe
O Fragmento staticInitializer da Probe