Class InternPool<T>

java.lang.Object
org.drasyl.util.InternPool<T>
Type Parameters:
T - Type of objects in the pool

public class InternPool<T> extends Object
Represents a pool of unique objects of type T. Should only be used if objects of type T are immutable and have a Object.equals(Object) implementation, which returns true only if both objects have the same content.

Inspired by: https://github.com/verhas/intern

  • Constructor Details

    • InternPool

      public InternPool()
  • Method Details

    • intern

      public T intern(T object)
      Returns a canonical representation for the object.

      A pool of objects of type T, initially empty, is maintained privately by this class.

      When the intern method is invoked, if the pool already contains a object equal to object as determined by the Object.equals(Object) method, then the object from the pool is returned. Otherwise, object is added to the pool and a reference to object is returned.

      It follows that for any two objects a and b, intern(a) == intern(b) is true if and only if a.equals(b) is true.

      Returns:
      a object that has the same contents as object, but is guaranteed to be from a pool of unique objects of type T.