java.lang.ref

java.lang.Object
  继承者 java.lang.ref.Reference<T>
      继承者 java.lang.ref.PhantomReference<T>

public class PhantomReference<T>
     
extends Reference<T>

虚引用对象,在回收器确定其指示对象可另外回收之后,被加入队列。虚引用最常见的用法是以某种可能比使用 Java 终结机制更灵活的方式来指派 pre-mortem 清除动作。

如果垃圾回收器确定在某一特定时间点上虚引用的指示对象是虚可到达对象,那么在那时或者在以后的某一时间,它会将该引用加入队列。

为了确保可回收的对象仍然保持原状,虚引用的指示对象不能被获取:虚引用的 get 方法总是返回 null

与软引用和弱引用不同,虚引用在加入队列时并没有通过垃圾回收器自动清除。通过虚引用可到达的对象将仍然保持原状,直到所有这类引用都被清除,或者它们都变得不可到达。

从以下版本开始:
1.2

构造方法摘要
PhantomReference(T referent, ReferenceQueue<? super T> q)
          创建一个引用给定对象的新的虚引用,并向给定队列注册它。
 
方法摘要
 T get()
          返回此引用对象的指示对象。
 
从类 java.lang.ref.Reference 继承的方法
clear, enqueue, isEnqueued
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

PhantomReference

public PhantomReference(T referent,
                        ReferenceQueue<? super T> q)
创建一个引用给定对象的新的虚引用,并向给定队列注册它。

可能用一个 null 队列创建虚引用,但这样的引用是完全无用的:其 get 方法将总是返回 null,同时,因为它没有队列,所以将永远无法把它加入队列中。

参数:
referent - 新的虚引用将引用的对象
q - 将向其注册引用的队列,如果不需要注册,则返回 null
方法详细信息

get

public T get()
返回此引用对象的指示对象。因为虚引用的指示对象总是不可到达的,所以此方法总是返回 null

覆盖:
Reference<T> 中的 get
返回:
null