为什么没有 StrongReference 对象?
2022-09-02 14:01:09
我正在实现一些行为,这些行为可以从某些时候使用弱引用中受益。我希望该类的用户能够在构建时指示是否属于这种情况。由于乍一看扩展,我似乎可以做这样的事情(这是一个模型,而不是我实际上想要做的事情):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();
}
}
但是没有类,根据参考javadocs:StrongReference
由于引用对象是与垃圾回收器密切合作实现的,因此此类可能不会直接子类化。
因此,我无法创建自己的参考子类,该子类包含对对象的强(即正常)引用。这似乎意味着不可能创建一个类来隐藏它是否使用来自调用方的弱(或软)引用。
我真的不明白为什么这个类不存在,一个对象应该总是从get()返回对象,除非已经调用了clear()。为什么缺少它?是否以某种方式与不一致?这将使构建通用引用持有者对象变得更加简单。StrongReference
StrongReference
Reference