计算类的实例

Cha*_*les 2 .net java testing

我正在寻找一种方法来以编程方式获取.NET和Java中某个类类型的实例数.

比方说,我有Foo课.我希望能够在同一个过程中获得Foo所有实例的当前计数.
但是我无法修改Foo,所以带有计数的静态int已经出来了.此外,我不能只将我所做的所有实例添加到某些静态列表中并计算它.我希望能够说:

System.GC.numberOf< Foo >()
Run Code Online (Sandbox Code Playgroud)

或者其他的东西.

我正在查看垃圾收集器,但我找不到任何相关的方法.

Jos*_*ody 5

如果你不能直接修改类(也许是因为它是一个内置的类?),你可以创建一个包装器,或者继承原始类的子类吗?

public class subFoo extends foo
{
    protected static int count = 0;

    public subFoo() 
    {
        count++;
        super();
    }

    protected void finalize() throws Throwable
    {
        count--;
        super.finalize();
    } 

    public static int getInstanceCount()
    {
        return count;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个例子是Java,可能有一些语法问题,因为我有点生疏.

当然,你必须确保重新声明所有foo作为subFoo整个代码的其余部分.