在我的游戏中,我有一个包含一组公民的Population
课程。每个人在实例化时用PopulationManager
注册自己。 PopulationManager
包含对游戏中所有Population
个对象的引用;它用于分析种群并快速检索种群。
我游戏中的许多结构可能包含Population
。防爆。 Town
包含Population
。当一个城镇被摧毁时,我希望人口对象也不再存在。但是,即使我摧毁了一个城镇,它的Population
对象仍然存在,因为PopulationMananger
中有一个对它的引用。
有没有办法在Population
中删除PopulationManager
对象的Town
对{@ 1}}的引用,而不显式调用某种注销(人口){ i> PopulationManager
中的方法?或者每次镇毁时我都会被迫手动删除参考?
答案 0 :(得分:0)
尝试使用weakHashMap,将键作为城镇对象,将值作为填充对象。
WeakHashMap只是anotehr Map,用于保存弱引用的轨迹,即在您的情况下,如果所有城镇对象都被赋值为null,则weakHashMap将确保在垃圾回收时,对应于该城镇对象的条目被删除
这样,你只需关心城镇对象,其余的将由WeakHashMap本身完成