java.lang.ref
Class Reference

java.lang.Object
  extended byjava.lang.ref.Reference
Direct Known Subclasses:
FinalReference, PhantomReference, SoftReference, WeakReference

public abstract class Reference
extends Object

Abstract base class for reference objects. This class defines the operations common to all reference objects. Because reference objects are implemented in close cooperation with the garbage collector, this class may not be subclassed directly.

Since:
1.2
Author:
Mark Reinhold

Nested Class Summary
private static class Reference.Lock
           
private static class Reference.ReferenceHandler
           
 
Field Summary
private  Reference discovered
           
private static Reference.Lock lock
           
(package private)  Reference next
           
private static Reference pending
           
(package private)  ReferenceQueue queue
           
private  Object referent
           
 
Constructor Summary
(package private) Reference(Object referent)
           
(package private) Reference(Object referent, ReferenceQueue queue)
           
 
Method Summary
 void clear()
          Clears this reference object.
 boolean enqueue()
          Adds this reference object to the queue with which it is registered, if any.
 Object get()
          Returns this reference object's referent.
 boolean isEnqueued()
          Tells whether or not this reference object has been enqueued, either by the program or by the garbage collector.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

referent

private Object referent

queue

ReferenceQueue queue

next

Reference next

discovered

private transient Reference discovered

lock

private static Reference.Lock lock

pending

private static Reference pending
Constructor Detail

Reference

Reference(Object referent)

Reference

Reference(Object referent,
          ReferenceQueue queue)
Method Detail

get

public Object get()
Returns this reference object's referent. If this reference object has been cleared, either by the program or by the garbage collector, then this method returns null.

Returns:
The object to which this reference refers, or null if this reference object has been cleared

clear

public void clear()
Clears this reference object. Invoking this method will not cause this object to be enqueued.


isEnqueued

public boolean isEnqueued()
Tells whether or not this reference object has been enqueued, either by the program or by the garbage collector. If this reference object was not registered with a queue when it was created, then this method will always return false.

Returns:
true if and only if this reference object has been enqueued

enqueue

public boolean enqueue()
Adds this reference object to the queue with which it is registered, if any.

Returns:
true if this reference object was successfully enqueued; false if it was already enqueued or if it was not registered with a queue when it was created