Não desse modo! O Java não consegue trabalhar nesse nível de memória ( creio que você deva ter vindo do C/C++, então lamento te informar, mas… rsrs, izo no ecxiste).
O que você pode fazer é como alucardeck falou, cria um atributo estático e faça a contagem por ele… o lado ruim é que você nunca vai conseguir diminuir esse número, a não ser que você coloque como padrão que todo código deverá informar quando finalizar o processamento com um objeto. Exemplo:
[code]public void metodoQualquer() {
DAO dao = new DAO();
dao.blablabla();
dao.finalizeInstance();
}[/code]
E na classe DAO, assim como todas as outras, você poderia fazer algo como:
[code]public class ManagerInstances {
private int count;
protected int getCount() {
return this.count;
}
public void add() {
this.count += 1;
}
public void remove() {
this.count -= 1;
}
}[/code]
E sua classe DAO, bem como todas as outras que você queira gerenciar, ficaria:
[code]public class DAO {
private static ManagerInstances managerInstances;
public DAO() {
if (managerInstances == null)
managerInstances = new ManagerInstances();
managerInstances.add();
}
public void finalizeInstance() {
managerInstances.remove();
}
}[/code]
E se quiser fazer algo realmente ninja, faça seu “GarbageCollector” rsrsrs, que na verdade será: Crie um método publico para resgatar a quantidade de instancias!
E com Reflection, percorra todas as classes, veja se ela tem um gerenciamento de instancias, e pegue a quantidade, e ai faça uma contabilização, gere relatório, o que você quizer.
Só que é aquele negócio… se alguem esqueçer de chamar o finalizeInstance… “melo” a brincadeira.
Falows