Class CacheValue<V>

java.lang.Object
org.graalvm.shadowed.com.ibm.icu.impl.CacheValue<V>
Type Parameters:
V - Cache instance value type

public abstract class CacheValue<V> extends Object
Value type for cache items: Holds a value either via a direct reference or via a Reference, depending on the current "strength" when getInstance() was called.

The value is conceptually immutable. If it is held via a direct reference, then it is actually immutable.

A Reference may be cleared (garbage-collected), after which get() returns null. It can then be reset via resetIfAbsent(). The new value should be the same as, or equivalent to, the old value.

Null values are supported. They can be distinguished from cleared values via isNull().

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    "Strength" of holding a value in CacheValue instances.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    Returns true if the "strength" is set to STRONG.
    abstract V
    get()
    Returns the value (which can be null), or null if it was held in a Reference and has been cleared.
    static <V> CacheValue<V>
    getInstance(V value)
    Returns a CacheValue instance that holds the value.
    boolean
    Distinguishes a null value from a Reference value that has been cleared.
    abstract V
    If the value was held via a Reference which has been cleared, then it is replaced with a new Reference to the new value, and the new value is returned.
    static void
    Changes the "strength" of value references for subsequent getInstance() calls.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • CacheValue

      public CacheValue()
  • Method Details

    • setStrength

      public static void setStrength(CacheValue.Strength strength)
      Changes the "strength" of value references for subsequent getInstance() calls.
    • futureInstancesWillBeStrong

      public static boolean futureInstancesWillBeStrong()
      Returns true if the "strength" is set to STRONG.
    • getInstance

      public static <V> CacheValue<V> getInstance(V value)
      Returns a CacheValue instance that holds the value. It holds it directly if the value is null or if the current "strength" is STRONG. Otherwise, it holds it via a Reference.
    • isNull

      public boolean isNull()
      Distinguishes a null value from a Reference value that has been cleared.
      Returns:
      true if this object represents a null value.
    • get

      public abstract V get()
      Returns the value (which can be null), or null if it was held in a Reference and has been cleared.
    • resetIfCleared

      public abstract V resetIfCleared(V value)
      If the value was held via a Reference which has been cleared, then it is replaced with a new Reference to the new value, and the new value is returned. The old and new values should be the same or equivalent.

      Otherwise the old value is returned.

      Parameters:
      value - Replacement value, for when the current Reference has been cleared.
      Returns:
      The old or new value.