Sta*_*lin 72 java collections garbage-collection weak-references
来自J. Bloch
内存泄漏的来源是监听器......确保回调被及时垃圾回收的最佳方法是仅存储对它们的弱引用,例如,通过仅将它们存储为WeakHashMap中的键 .
那么,为什么Java Collections框架中没有任何WeakSet ?
mar*_*art 187
Set<Object> weakHashSet = Collections.newSetFromMap(
new WeakHashMap<Object, Boolean>());
Run Code Online (Sandbox Code Playgroud)
正如在Collections.newSetFromMap
文档中看到的,传递一个WeakHashMap
来获得一个Set
.
Ste*_*n C 14
那么,为什么java集合框架中没有任何WeakSet呢?
唯一真正正确的答案是我们无法告诉你原因,因为我们不是做出设计决策的人.只有Java设计师知道他们做出决定的原因1.
尽管可能存在有限的用例WeakHashSet
,但Java类库设计原则的一部分是避免使用实用程序类为所有可能的用例填充类库.
还有许多其他类库包含集合类型; Apache Commons Collections和Google Collections(又名Guava)就是很好的例子.但是,WeakHashSet
甚至没有为Apache和Google库"削减".
当然,您可以使用Collections.newSetFromMap
包装WeakHashMap
实例.
1 - 辩论该决定的正确性超出了StackOverflow的范围.这是一个问答网站,而不是讨论论坛.
归档时间: |
|
查看次数: |
20990 次 |
最近记录: |