< prev index next >

src/java.base/share/classes/java/lang/ref/WeakReference.java

Print this page
*** 24,15 ***
--- 24,25 ---
   */
  
  package java.lang.ref;
  
  
+ import java.util.Objects;
+ 
  /**
   * 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.
   *
+  * <div class="preview-block">
+  *      <div class="preview-comment">
+  *          The referent must have {@linkplain Objects#hasIdentity(Object) object identity}.
+  *          When preview features are enabled, attempts to create a reference
+  *          to a {@linkplain Class#isValue value object} result in an {@link IdentityException}.
+  *      </div>
+  * </div>
+  *
   * <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
   * from which that object is reachable through a chain of strong and soft

*** 51,10 ***
--- 61,12 ---
      /**
       * 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 IdentityException if the referent is not an
+      *         {@link java.util.Objects#hasIdentity(Object) identity object}
       */
      public WeakReference(T referent) {
          super(referent);
      }
  

*** 63,10 ***
--- 75,12 ---
       * 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 IdentityException if the referent is not an
+      *         {@link java.util.Objects#hasIdentity(Object) identity object}
       */
      public WeakReference(T referent, ReferenceQueue<? super T> q) {
          super(referent, q);
      }
  
< prev index next >