【发布时间】:2013-04-22 19:24:02
【问题描述】:
在研究如何在 android 中传递对象引用时,我正在考虑以下问题。
假设我有一个带有 Long 作为键的 WeakHashmap。现在我将一个 Object 放入这个 WeakHashMap 并将它分配给键“new Long(1)”(假设我将保存对这个 Long 的引用)。
现在应用程序的另一部分创建了一个新的 Long(1),然后我将我的第一个 Long(用作键)设置为 null。
- WeakHashMap 中的对象会发生什么情况?
- 如果我将 Long 替换为具有 Long 成员的自己的类,并让它的 compare() 方法与另一个相同类型的对象(我自己的类)在它的 Long 中具有相同值进行比较时返回 true。
- 假设在这两种情况下 WeakReference 都被清除。如果我在清除第一个密钥之前使用第二个创建的密钥访问 WeakHasMap 一次,会有什么不同吗?
【问题讨论】:
-
将
WeakHashMap与您无法控制的类型一起使用非常危险。 -
如果您知道自己在做什么,通常有风险的事情会变得非常方便。这就是我问的原因;-)
标签: java weak-references weakhashmap