SoftReference
, WeakReference
,PhantomReference
可用于自定义垃圾回收的过程。所有这些都扩展Reference<T>
,因此可以将它们混合在单个集合中。硬引用(最常见的)没有扩展Reference<T>
,因此不可能在一个集合中混合硬引用和其他类型的引用。我是对的,我们应该把CustomReference<T> extends Reference<T>
所有类型的对象链接混合在单个集合中,我们应该把它放入集合中Collection<Reference<T>>
吗?
更新:因此,在编写SSCCE时,我发现无法以Reference<T>
通常的方式进行扩展(构造函数是包本地的)。
所以问题现在更新到以下内容:我可以使用单个集合类创建缓存,它总是保存一些对象(比如 10 个),而其他对象在内存不允许时由 GC 回收?除了为硬引用和软引用提供自定义包装器并将它们存储在集合中之外,还有其他方法可以做到这一点吗?