我更习惯 C++。要获取一个类的所有实例的列表(这是一个可以由用户扩展的库类),我通常有一个静态容器,其中包含对此类对象的所有引用:
#include <list>
class CPPClass;
class CPPClass {
public:
CPPClass() {
objList.push_back(this);
}
~CPPClass() {
objList.remove(this);
}
private:
static std::list<CPPClass *> objList;
};
std::list<CPPClass *> CPPClass::objList;
我应该如何在 Java 中做同样的事情?我有几个担忧:
- 有人向我提到可以有多个类加载器,这可能会导致问题
- java中没有析构函数,那么如何从列表中删除引用?
- 如果没有删除引用,这些对象什么时候被垃圾收集?