Class SetOnce<T>

  • All Implemented Interfaces:
    java.lang.Cloneable

    public final class SetOnce<T>
    extends java.lang.Object
    implements java.lang.Cloneable
    A convenient class which offers a semi-immutable object wrapper implementation which allows one to set the value of an object exactly once, and retrieve it many times. If set(Object) is called more than once, SetOnce.AlreadySetException is thrown and the operation will fail.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.atomic.AtomicReference<SetOnce.Wrapper<T>> set  
    • Constructor Summary

      Constructors 
      Constructor Description
      SetOnce()
      A default constructor which does not set the internal object, and allows setting it by calling set(Object).
      SetOnce​(T obj)
      Creates a new instance with the internal object set to the given object.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      T get()
      Returns the object set by set(Object).
      void set​(T obj)
      Sets the given object.
      boolean trySet​(T obj)
      Sets the given object if none was set before.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • set

        private final java.util.concurrent.atomic.AtomicReference<SetOnce.Wrapper<T>> set
    • Method Detail

      • set

        public final void set​(T obj)
        Sets the given object. If the object has already been set, an exception is thrown.
      • trySet

        public final boolean trySet​(T obj)
        Sets the given object if none was set before.
        Returns:
        true if object was set successfully, false otherwise
      • get

        public final T get()
        Returns the object set by set(Object).