Class MemoizingSupplier<T>

  • All Implemented Interfaces:
    Memoize<T>, java.util.function.Supplier<T>

    class MemoizingSupplier<T>
    extends java.lang.Object
    implements Memoize<T>
    The object can exist in one of two states:
    • initial which means the source supplier has not been called or has not returned a value acceptable to the predicate and memoized holds the wrapped supplier. From this state, the object can transition to open.
    • open which means memoized is the value from the source supplier. This is the terminal state.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean initial  
      private java.lang.Object memoized  
    • Constructor Summary

      Constructors 
      Constructor Description
      MemoizingSupplier​(java.util.function.Supplier<? extends T> supplier)  
      MemoizingSupplier​(java.util.function.Supplier<? extends T> supplier, java.util.function.Predicate<? super T> predicate)  
    • Field Detail

      • initial

        private volatile boolean initial
      • memoized

        private java.lang.Object memoized
    • Constructor Detail

      • MemoizingSupplier

        MemoizingSupplier​(java.util.function.Supplier<? extends T> supplier)
      • MemoizingSupplier

        MemoizingSupplier​(java.util.function.Supplier<? extends T> supplier,
                          java.util.function.Predicate<? super T> predicate)
    • Method Detail

      • get

        public T get()
        Description copied from interface: Memoize
        Get the memoized value.
        Specified by:
        get in interface Memoize<T>
        Specified by:
        get in interface java.util.function.Supplier<T>
        Returns:
        The memoized value.
      • peek

        public T peek()
        Description copied from interface: Memoize
        Peek the memoized value, if any.

        This method will not result in a call to the source supplier.

        Specified by:
        peek in interface Memoize<T>
        Returns:
        The memoized value if a value is memoized; otherwise null.
      • isPresent

        public boolean isPresent()
        Description copied from interface: Memoize
        If a value is memoized, return true. Otherwise return false.

        This method will not result in a call to the source supplier.

        Specified by:
        isPresent in interface Memoize<T>
        Returns:
        true if a value is memoized; otherwise false.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object