我正在实现一些行为,这些行为有时可以从使用弱引用中受益。我希望班级的用户能够在施工时指出是否是这种情况。由于乍一看WeakReference扩展,我似乎可以做类似的事情(这是一个模型,而不是我真正想要做的事情):Reference
public class Container<T> {
    private boolean useWeakRef;
    private Reference<T> ref;
    public Container(boolean isWeak) {
        useWeakRef = isWeak;
    }
    public void store(T val) {
        if(useWeakRef) {
            ref = new WeakReference<>(val);
        } else {
            ref = new StrongReference<>(val);
        }
    }
    // May return null
    public T get() {
        return ref.get();
    }
}
但是没有StrongReference类,并且根据参考 javadocs:
因为引用对象是与垃圾收集器密切合作实现的,所以这个类不能直接子类化。
所以我不能创建我自己的引用子类来持有对对象的强(即正常)引用。这似乎意味着不可能创建一个隐藏它是否使用来自调用者的弱(或软)引用的类。
我真的不明白为什么这个类不存在,一个StrongReference对象应该总是简单地从 get() 返回对象,除非 clear() 已被调用。为什么这个不见了?在某种程度上是StrongReference不一致的吗?Reference这将使构建通用引用持有者对象变得更加简单。