< prev index next > src/java.base/share/classes/java/lang/ref/WeakReference.java
Print this page
/**
* Weak reference objects, which do not prevent their referents from being
* made finalizable, finalized, and then reclaimed. Weak references are most
* often used to implement canonicalizing mappings.
+ * <p>
+ * The referent must not be an instance of a {@linkplain Class#isValue()
+ * value class}; such a value can never have another reference to it
+ * and cannot be held in a reference type.
*
* <p> Suppose that the garbage collector determines at a certain point in time
* that an object is <a href="package-summary.html#reachability">weakly
* reachable</a>. At that time it will atomically clear all weak references to
* that object and all weak references to any other weakly-reachable objects
/**
* Creates a new weak reference that refers to the given object. The new
* reference is not registered with any queue.
*
* @param referent object the new weak reference will refer to
+ * @throws IllegalArgumentException if the referent is an instance of a
+ * {@link Class#isValue() value class}
*/
public WeakReference(T referent) {
super(referent);
}
* registered with the given queue.
*
* @param referent object the new weak reference will refer to
* @param q the queue with which the reference is to be registered,
* or {@code null} if registration is not required
+ * @throws IllegalArgumentException if the referent is an instance of a
+ * {@link Class#isValue() value class}
*/
public WeakReference(T referent, ReferenceQueue<? super T> q) {
super(referent, q);
}
< prev index next >