2017-08-17 47 views
2

这里假设是Button对象,我不能修改,我想一些功能添加到它,使它可拖动例如,所以我创建了一个类Draggable如下:如何“重视”的对象

​​

每当Button对象被销毁并且垃圾收集时,附加到它的对象也应该是垃圾收集器自动收集的。那么有没有一种设计模式或者可以帮助我实现这个方法的东西?

+0

对你quesiton的答案在这里:https://stackoverflow.com/questions/2506488/when-is-the-finalize-method-called-in-java – Azodious

+0

你有没有考虑继承? – Sweeper

+0

@Sweeper这些对象由其他人提供,因此为这些类型中的每一种创建子类都是不可扩展的。 – JSPDeveloper01

回答

1

您可能需要基于WeakReferences的内部缓存。

换句话说:您的Draggalbe只能在没有“硬”活动参考指向它时进行垃圾回收。

换句话说:

    每次创建 Draggabe你将它放入缓存
  • 您定期检查高速缓存,如果在缓存弱引用仍存在有效
  • 当你发现时间
  • 一个弱的参考,变成null - 你从缓存中删除条目

当然 - 你必须确保其他“生命”对象保持对Draggable对象的硬引用。

请参阅herethere以供进一步阅读。