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 an 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:
      an object that has the same contents as object, but is guaranteed to be from a pool of unique objects of type T.