我有一个HashMap<MyClass,ArrayList<WeakReference<MyObject>>>变量。

即使从哈希图中清除了弱引用,我也希望能够从HashMap中手动删除“MyObject”。这是一个中央监听器对象。

当我将项目添加到与主哈希图键的值链接的arraylist时,我使用.add(new WeakReference<MyObject>(owner))
当我想从外部移除“自我”时,我将“所有者”作为参数发送给真实对象。那么,如何从哈希图中手动删除该对象?我可以查询从传入所有者参数生成的新WeakReference吗?旧的"new WeakReference<MyObject>(owner)"和新的"new WeakReference<MyObject>(owner)"是否相等?所以我可以将其从哈希图中删除。

最佳答案



不,它们将不相等。 都是不同的对象,并且在弱引用中未覆盖equals方法。因此,它默认检查两个引用是否相等。

建议:

Map<MyClass,Map<String,WeakReference<MyObject>>>

您可以将list更改为map,并在对象中使用一些 ID 类的东西作为键,以进行弱引用。 ,当所有者调用时,使用该对象的ID删除弱引用。

关于java - 我可以在Java中比较WeakReference变量吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15154159/

10-09 19:46