Package org.apache.lucene.util

# Class RefCount<T>

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

public class RefCount<T> extends Object
Manages reference counting for a given object. Extensions can override `release()` to do custom logic when reference counting hits 0.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final T`
  `object`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RefCount(T object)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `decRef()`
  Decrements the reference counting of this object.
  `final T`
  `get()`
  `final int`
  `getRefCount()`
  Returns the current reference count.
  `final void`
  `incRef()`
  Increments the reference count.
  `protected void`
  `release()`
  Called when reference counting hits 0.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### object

    protected final T object

- ## Constructor Details

  - ### RefCount

    public RefCount(T object)

- ## Method Details

  - ### release

    protected void release() throws IOException
    Called when reference counting hits 0. By default this method does nothing, but extensions can override to e.g. release resources attached to object that is managed by this class.
    Throws:
      `IOException`

  - ### decRef

    public final void decRef() throws IOException
    Decrements the reference counting of this object. When reference counting hits 0, calls `release()`.
    Throws:
      `IOException`

  - ### get

    public final T get()

  - ### getRefCount

    public final int getRefCount()
    Returns the current reference count.

  - ### incRef

    public final void incRef()
    Increments the reference count. Calls to this method must be matched with calls to `decRef()`.