## org.apache.lucene.util
Class SetOnce<T>

    java.lang.Object
      org.apache.lucene.util.SetOnce<T>

    public final class SetOnce<T>

extends Object

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.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Nested Class Summary
`static class` `SetOnce.AlreadySetException` Thrown when `set(Object)` is called more than once.

Constructor Summary
`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
`T` `get()` Returns the object set by `set(Object)`.
`void` `set(T obj)` Sets the given object.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### SetOnce

    public SetOnce()

  A default constructor which does not set the internal object, and allows setting it by calling `set(Object)`.

### SetOnce

    public SetOnce(T obj)

  Creates a new instance with the internal object set to the given object. Note that any calls to `set(Object)` afterwards will result in `SetOnce.AlreadySetException`

  Throws:
    `SetOnce.AlreadySetException` - if called more than once
  See Also:
    `set(Object)`

Method Detail

### set

    public final void set(T obj)

  Sets the given object. If the object has already been set, an exception is thrown.

### get

    public final T get()

  Returns the object set by `set(Object)`.