在运行时,需要跟踪类的实例数。从面向对象的角度来看,您使用以下哪种约定来实现这一目标?
选择
选择1是我的选择
我是对的吗?
不是作业。
我是JAVA程序员。但我必须回答C ++问题。
答案 0 :(得分:5)
有点正确。静态WeakHashMap和将自身置于地图中的构造函数可以完成这项工作。每次调用size()时,它都会检查哪些对象已被gc'ed。
更多oop(我想)的方法是使用静态工厂方法,如:
class Trackable {
private static WeakHashMap<Trackable, Object> map = new WeakHashMap<>();
private static final Object dummy = new Object();
public static Trackable newInstance() {
Trackable instance = new Trackable();
map.put(instance, dummy);
return instance;
}
public static int getTrackedObjectSize() {
return map.size();
}
private Trackable() {}
}
答案 1 :(得分:0)
这可以通过static
成员来实现由于只为该类维护了一个副本,您可以在构造函数中将其增加到跟踪创建的实例数,而不是当前有多少实例可用强>