java使用引用删除类A和其他类中的所有相关实例
我有三节课。A类、B类和C类
我有一个类a,我想把a的同一个实例传递给类B和类C,当我删除类a(在C和B中使用的实例)时,我找到了一种方法,该类在C和B中通过引用设置为null,而不需要设置use setA(null)
你可以在下面搜索框中键入要查询的问题!
我有三节课。A类、B类和C类
我有一个类a,我想把a的同一个实例传递给类B和类C,当我删除类a(在C和B中使用的实例)时,我找到了一种方法,该类在C和B中通过引用设置为null,而不需要设置use setA(null)
# 1 楼答案
如果想控制实例的链接,需要一些管理机制。 如果没有第三方解决方案,最简单的方法就是提供中间容器对象,它将控制对实例的访问
以下是一个基本示例:
这里我们有三个实体:一只狗、一个人和一个狗容器。 这个人就是狗的主人。但他与那条狗没有直接联系。它只能通过容器与狗互动。 所以,如果你把链接改成容器,它会影响所有人
输出为:
另外,使用null也是一种不好的做法,所以最好使用
Special Case
模式来提供Null Object
# 2 楼答案
使用WeakReferences
在B和C中,对A的引用如下:
现在,如果您要删除的A的实例是A的唯一一个非
WeakReference
的实例,那么A的该实例就有资格进行垃圾收集。垃圾回收后WeakReference
将返回null